2012-04-13 56 views
11

¿Cómo obtener las identificaciones de los nodos seleccionados para el nodo raíz en jsTree?jsTree: ¿Cómo obtener ID de los nodos seleccionados para el nodo raíz en jsTree?

Suponga C se selecciona nodo entonces ¿Cómo puedo obtener Todos los ID de matrices de C.

A

  • B

    • C

      + C1

      + c2

siguiente código volverá Sólo ID del padre inmediato: Si he seleccionado C entonces consigo solamente B

.bind("select_node.jstree", function (event, data) { 
    //`data.rslt.obj` is the jquery extended node that was clicked   
    alert("Selected node = "+ data.rslt.obj.attr("id")); 
    alert("Parent of Selected node = "+ data.inst._get_parent(data.rslt.obj).attr("id")) 
}); 

Salida:

Selected node = C

Parent of Selected node = B

¿Hay alguna manera de obtener todos los nodos principales ID, es decir, nodo seleccionado para el nodo raíz?

  • ¿Cómo obtener todos los nodos secundarios del nodo seleccionado en jsTree?

Cualquier ayuda u orientación en este asunto sería apreciada.

Respuesta

16

Uso parents en jQuery para obtener todos los padres, filtrando por li porque todos los elementos del árbol son li en jstree, intente esto:

var parents = data.rslt.obj.parents("li"); 

Y para los niños utilizan children en jQuery, así:

var children = data.rslt.obj.parent().find('li'); 

EDITAR Usando lo anterior, aquí se explica cómo obtener todos los elementos principales y secundarios y ponerlos en una matriz para cada uno:

Padres:

var parents = []; 
data.rslt.obj.parents("li").each(function() { 
    parents.push({ id: $(this).attr("id"), description: $(this).children("a").text() }); 
}); 

Niños:

var children = []; 
data.rslt.obj.find("li").each(function() { 
    children.push({ id: $(this).attr("id"), description: $(this).children("a").text() }); 
}); 
+0

Gracias por la respuesta mattytommo. la lista de padres devuelve [object HTMLLIElement]. ¿Cómo obtener ID y texto de ese "objeto HTMLLIElement"? – StackOverFlow

+0

¿Desea todas las identificaciones de los padres o solo del padre inmediato? Avísame y cambiaré mi código :) – mattytommo

+0

mattytommo :) Si el usuario selecciona "C", debería obtener todos los ID y el valor del nodo (texto) de todos los padres, es decir, (B, A). Estoy implementando árbol dual en jstree. En ese caso, si el usuario selecciona el nodo (hoja/hoja) del árbol izquierdo, entonces quiero copiar la jerarquía del nodo seleccionado al nodo raíz en el árbol izquierdo en un evento particular. – StackOverFlow

10

1 solución más fácil

.get_path (node , id_mode) 

devolver la ruta a un nodo, ya sea como un arr ay de ID o como una matriz de nombres de nodo. nodo mixto: puede ser un nodo DOM, un nodo jQuery o un selector que apunta a un elemento dentro del árbol, cuya ruta queremos.bool id_mode: Si se establece en verdaderos ID, se devuelven en lugar de los nombres de los padres. El valor predeterminado es falso.

// To get path [ID or Name] from root node to selected node 

var ids = data.inst.get_path('#' + data.rslt.obj.attr('id'),true); 

// Returns IDs from root to selected node 

var names = data.inst.get_path('#' + data.rslt.obj.attr('id'),false); 

// Returns Name's from root to selected node 

alert("Path [ID or Name] from root node to selected node = ID's = "+ids+" :: Name's = "+names); 
+1

Excelente. Justo lo que necesitaba. Quería el texto del nodo raíz para cualquier nodo seleccionado, así que acabo de usar 'data.inst.get_path (data.rslt.obj) [0]' – DavidHyogo

+0

use 'data.instance' en lugar de' data.inst' para obtener funciona con jsTree 3. ¡Gracias por la ayuda! – Stefan

Cuestiones relacionadas