2010-04-06 59 views

Respuesta

10

Los nodos en jsTree son elementos de la lista esencialmente envueltos. Esto te dará una referencia al primero.

var n = $.tree.focused().get_node('li:eq(0)') 

Puede reemplazar $.tree.focused() si tiene una referencia al árbol.

para obtener el ID, tomar el primer elemento emparejado

if (n.length) 
    id = n[0].id 

o puede utilizar la función attr jQuery, que funciona en el primer elemento del conjunto

id = n.attr('id'); 
3
$.jstree._reference('#my_tree_container')._get_node(null, true).each(function() { 
    id = $(this).attr("id"); 
    alert('Id selected: ' + id);   
    }); 
95

Incapaz para que la solución de Harpo funcione, y no estoy dispuesto a usar la solución de Olivier ya que usa funciones jsTree internas, se me ocurrió un enfoque diferente.

$('#tree').jstree('get_selected').attr('id') 

Así de simple. La función get_selected devuelve una matriz de elementos de lista seleccionados. Si hace .attr en esa matriz, jQuery verá el primer elemento en la lista. Si necesita ID de varias selecciones, en su lugar, trátelo como una matriz.

+7

Este def ¡Inicialmente debería ser la solución aceptada! – m0s

+2

no tengo idea de por qué data.rslt.obj.attr ("id") no funciona aquí (si tiene datos como el argumento en un controlador onselect), pero esto hace el truco y termina una> 1h búsqueda de una solución - ¡Gracias! – Nicolas78

+4

Definitivamente la solución adecuada. – davidethell

0

Con la última versión de Jstree; puede hacerlo de la siguiente manera:

<script type="text/javascript> 
    var checked_ids = []; 
    $('#your-tree-id).jstree("get_checked",null,true).each(function(){ 
     checked_ids.push(this.id); 
    }); 
    alert(checked_ids.join(",")); 
</script> 
1

que estaba teniendo problemas para obtener los identificadores seleccionados de un árbol con selecciones múltiples. Esta es la forma en que los obtuve:

var checked_ids = []; 
$("#your-tree-id").jstree('get_selected').each(function(){  
     checked_ids.push($(this).data('id'));       
}); 
1

En mi caso, la llamada de datos no funciona. Logré acceder a mis datos de nodo utilizando la función attr.

$("#tree").jstree("get_selected").attr("my-data-name"); 
0
<script type="text/javascript> 
    checked_ids.push($(this).context.id); 
</script> 
10

En jstree versión 3.1.1, se puede obtener directamente de get_selected:

$("#<your tree container's id>").jstree("get_selected") 
+0

Tu respuesta es 100% correcta. Para otros, el método 'get_selected' no obtiene el nodo, sino que obtiene el id del nodo. Puedes obtener el nodo usando el id llamando al método 'get_node' - ej. var node = $ ("# myelement"). jstree ("get_node", nodeId); – barrypicker

0

sólo tiene que utilizar

var nodeId = $('#FaqTreeView').jstree().get_selected("id")[0].id; 

donde #FaqTreeView es el id de la div que contiene el jstree.

0

En algunos casos y/o versiones jstree esta solución no funciona.

$('#tree').jstree('get_selected').attr('id'); 

En lugar de definir "id" no obtengo nada. ¿Qué hizo el truco para mí es:

$("#tree").jstree("get_selected").toString(); 
3

En la versión más reciente de jsTree (revisado en 3.3.3), que puede hacer esto para obtener una matriz de ID:

var ids = $('#tree').jstree('get_selected'); 

Esto devolverá, por ejemplo, ["selected_id1", "selected_id2", "selected_id3"]. Si desea obtener el nodos (ID) no seleccionada, puede hacer esto:

var nodes = $('#tree').jstree('get_selected', true); 

El current docs contienen más información.

+0

No conocía el parámetro 'verdadero' para obtener los nodos reales. Genial, ¡gracias! – barrypicker

0

Todas estas son respuestas antiguas para las versiones anteriores. A partir de la versión 3.3.3, esto funcionará para obtener todos los atributos del nodo seleccionado.

$('#jstree').jstree().get_selected(true)[0] 

Si a continuación desea el ID, agregue .id al final. Puede ver todos los demás atributos en las herramientas de desarrollador web si copia el código anterior.

0

Se puede utilizar el siguiente código de nodos var = $ ("# jstree_demo_div") jstree (verdadero) .get_selected ("lleno", true);. // Lista de nodo seleccionado

nodos [0] // .ID que dará id del objeto primero de la matriz

1

para obtener todos los identificadores seleccionados utilizan el código de abajo

var selectedData = []; 
var selectedIndexes; 
selectedIndexes = $("#jstree").jstree("get_selected", true); 
jQuery.each(selectedIndexes, function (index, value) { 
    selectedData.push(selectedIndexes[index].id); 
}); 

ahora tiene todos los seleccionados de ID en el "selectedData" variable de

Cuestiones relacionadas