Empecé a jugar con jQuery y el complemento jsTree ayer, y lo he cargado con éxito el árbol con una llamada AJAX a un servlet. Ahora, me gustaría que el árbol abra todos los nodos después de la carga, así que agregué una función de éxito al atributo ajax. Sin embargo, parece que no puedo hacer que el método open_all() funcione correctamente. Soy muy nuevo para trabajar con jQuery, así que supongo que es algo simple que estoy haciendo mal.¿Por qué jsTree open_all() no funciona para mí?
Firebug no muestra ningún error que descarte el error tonto del nombre del método mal escrito. Revisé la documentación y creo que estoy haciendo todo correctamente de acuerdo con lo que leo. El árbol se está cargando correctamente, pero no abre todos los nodos después de que se carga la página.
Estoy usando jQuery 1.4.2 y jsTree 1.0rc2 en Firefox 3.6.8.
Aquí está el código que estoy usando para cargar el árbol y tratará de abrir todos los nodos en el árbol:
// 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 Este método funcionó para mí, la respuesta aceptada no. – RedFilter
¿De todos modos para que esto funcione después de una actualización? El evento cargado no parece dispararse. ¿Hay algún otro evento que indique cuándo se cargaron los datos? – Jens
para jstree v3 ahora necesita esto (estaba abriendo el nodo raíz solamente) '.on ('loaded.jstree', función (evento, datos) { data.instance.open_node ('0') })' – KeepCalmAndCarryOn