Iniziare a giocare con jQuery e il plugin jsTree ieri, e farlo caricare con successo l'albero con una chiamata AJAX a un servlet. Ora, vorrei che l'albero aprisse tutti i nodi dopo il caricamento, quindi ho aggiunto una funzione di successo all'attributo ajax. Tuttavia, non riesco a ottenere il metodo open_all() per funzionare correttamente. Sono molto nuovo a lavorare con jQuery quindi immagino che sia qualcosa di semplice che sto sbagliando.Perché jsTree open_all() non funziona per me?
Firebug non mostra alcun errore che esclude lo stupido errore del nome del metodo in errore. Ho controllato la documentazione e penso che sto facendo tutto correttamente secondo quello che ho letto. L'albero si sta caricando correttamente, ma non apre tutti i nodi dopo il caricamento della pagina.
Sto utilizzando jQuery 1.4.2 e jsTree 1.0rc2 su Firefox 3.6.8.
Ecco il codice che sto usando per caricare l'albero e tentare di aprire tutti i nodi dell'albero:
// Create the tree object
$("td#modelXML").jstree({
core : { "animation" : 0 },
//xml_data : {"data" : "" + xml, "xsl" : "nest"},
xml_data : {"ajax" :
{"url" : "servlet/GetModelHierarchy",
"type" : "post", "data" : { modelId : "" + modelId} },
"xsl" : "nest",
"success" : function(){
$(this).open_all(-1);
}
},
themes : {"theme" : "classic", "dots" : true, "icons" : true},
types : {
"types" : {
"category" : {
"valid_children" : ["factor"]
},
"factor" : {
"valid_children" : ["level"]
},
"level" : {
"valid_children" : "none",
"icon" : {
"image" : "${request.contextPath}/jsTree/file.png"
}
}
}
},
plugins : ["themes", "types", "xml_data"]
});
+1 Questo metodo ha funzionato per me, risposta accettata no. – RedFilter
Ad ogni modo per fare questo lavoro dopo un aggiornamento? L'evento caricato non sembra sparare. C'è qualche altro evento che dice quando i dati sono stati caricati? – Jens
per jstree v3 ora è necessario questo (stavo aprendo solo il nodo radice) '.on ('loaded.jstree', funzione (evento, dati) { data.instance.open_node ('0') })' – KeepCalmAndCarryOn