2011-01-28 32 views
12

Soy totalmente nuevo en jQuery y jstree. Estoy usando jstree y llenando los datos usando xml. Pero me gustaría capturar eventos para cada nodo, ya sea que estén marcados o no junto con sus ID. Intenté usar API de complementos de jstree como change_state(), check_node() o select_node() pero no está funcionando. También me gustaría obtener todos los datos de los nodos seleccionados en una matriz para su posterior procesamiento. ¿Alguien puede ayudar?Jquery Jstree checkbox captura de eventos

Gracias ...

+0

¿qué plugin de jstree estás usando? – Vivek

+0

@Vivek probablemente jquery.jstree. @ user529011 ¿Puedes dar un ejemplo del código que usas? Tal vez aísle su problema en http://www.jsfiddle.net – Raynos

+0

jquery jstree v.1.0-versión – user529011

Respuesta

3

la versión actual de jstree parece tener un problema con la unión del check_node.jstree. También el enlace select_node.jstree no se activa con el complemento de casilla de verificación activo con la versión actual.

Diríjase a HERE donde puede formularle preguntas al creador o incluso ver las preguntas ya realizadas.

En cuanto a $.jstree._reference("#demo").get_selected(); que pueda obtener el ID de cada elemento utilizando $.jstree._reference("#demo").get_selected().each(function(index,element){alert($(element).attr("id"));});

+1

Solo una nota rápida: la nueva versión de jstree usa "reference" "(sin guion bajo). –

22

me gusta el plugin jstree pero no es bien documentados, ni es construido para conformar decir, las normas de jQuery UI de desarrollo del complemento. He usado 1.0rc2 para lograr lo que estás tratando de hacer.

Debes vincular el evento "cargado" antes de crear una instancia del jstree así que supongo que es lo mismo con el evento "change_state". El otro aspecto a tener en cuenta es que "change_state" es más que solo un cambio debido a una casilla de verificación. Por ejemplo, también se activará cuando expanda un nodo (pero no colapsará, por algún motivo). Dicho esto, realizo algunas comprobaciones en el manejador "change_state" para tratar de filtrar los eventos no deseados del cambio en la casilla de verificación. El código mínimo para aprovechar el manejador es

$("#treeElement").bind("change_state.jstree", function (e, d) { 
    var tagName = d.args[0].tagName; 
    var refreshing = d.inst.data.core.refreshing; 
    if ((tagName == "A" || tagName == "INS") && 
     (refreshing != true && refreshing != "undefined")) { 
    //if a checkbox or it's text was clicked, 
    //and this is not due to a refresh or initial load, run this code . . . 
    } 
}); 

Su elemento es hecho clic a continuación d.rslt y se puede obtener elementos comprobados con d.inst.get_checked() por sólo el elemento se hace clic, o d.inst.get_checked(d.rslt) para un objeto que contiene los subnodos que estén seleccionadas. Use la función .each de jquery para procesar los nodos.

+0

salvó mi día ... –

+0

¿Cuál es el sentido de escribir un complemento de casilla de verificación para un árbol de datos sin una API de eventos obvio? ¡Parece un poco de supervisión! – rgvcorley

+1

Retiro eso: los eventos 'check_node.jstree' y' uncheck_node.jstree' se desencadenan, simplemente no está en la documentación de jstree. – rgvcorley

Cuestiones relacionadas