2012-07-16 21 views

risposta

2

ho trovato un modo per farlo. Nel mio caso sto usando xml come origine dati per l'albero. Sto vincolando l'evento open_node al jstree nel modo seguente. Fai attenzione che anche se sto usando xml, la struttura interna è quella dei dati html.

// jsTree Configuration hash 
var jsTreeConfig = {}; 

$("#demo1").jstree(jsTreeConfig) 
      .bind('open_node.jstree', function(e, data) { 
       var parentObj = data.rslt.obj; // parent object 
       var jstreeInstance = data.inst; // jstree instance 
       $(data.rslt.obj).find("li").each(function(idx, listItem) { 
        var child = $(listItem); // child object 
        // do Stuff with child which can be any level of hierarchy depth 
        // ... 
       }); 
      }); 
+0

Ci scusiamo per la scarsa indentazione. jstree ({...}) ha tutte le opzioni per creare un'istanza del jstree. Hai bisogno di jQuery precaricato perché funzioni. – Sid

4

È possibile ottenere pieno albero tutto utilizzando questo selettore: $("#demo1").find("li > a")

+0

Grazie a @fliespl ma ho bisogno solo dei nodi figli di un dato genitore. Ho capito un modo per farlo. Ho intenzione di pubblicare una risposta subito dopo averla testata. – Sid

4

ho provato la soluzione precedente e non funziona con l'ultima versione di jsTree (V3.2.1). Di seguito è riportata una soluzione aggiornata per ottenere i nodi figlio e i sottonodi del genitore.

$("#myTree").bind('selected_node.jstree', function (node, data) { 
    var selectedNodes = $("#myTree").jstree(true).get_json(data.node.id, { flat: true }); 
    for (var i = 0; i < selectedNodes.length; i++) { 
     // Apply logic here 
     // ... 
     // ... 
     // ... 
    } 
}); 
Problemi correlati