j'utilise le code suivant:
$("#treeview").jstree();
$("#treeview").jstree('open_all');
Avec le html suivant:
<div id="treeview">
<ul>
<li>
<a href="#">rubentebogt</a>
<ul>
<li>
<a href="#" onclick="goTo('index.php?module=alarm&pagina=dashboard&id=6',false);">Beneden</a>
</li>
<li>
<a href="#" onclick="goTo('index.php?module=alarm&pagina=dashboard&id=7',false);">Boven</a>
</li>
</ul>
</li>
</ul>
</div>
Mon problème est que tous les nœuds restent fermés, je ne peux pas les faire s'ouvrir avec jstree ('open_all');
Le documentation jsTree est "sous optimal". Les documents n'indiquent pas clairement que l'initialisation fonctionne de manière asynchrone. Il y a core.loaded () :
Une fonction factice, dont le but est uniquement de déclencher l'événement chargé. Cet événement est déclenché une fois après le chargement des nœuds racine de l'arborescence, mais avant l'ouverture des nœuds définis dans initial_open.
Cela suggère un événement loaded.jstree
est déclenché après la configuration de l'arborescence. Vous pouvez vous connecter à cet événement pour ouvrir tous vos nœuds:
var $treeview = $("#treeview");
$treeview
.jstree(options)
.on('loaded.jstree', function() {
$treeview.jstree('open_all');
});
J'utilise la version 3 de jstree et Chrome. L'événement chargé n'a pas fonctionné pour moi, mais l'événement ready a fonctionné, même après la création de l'instance jstree:
$('#treeview').on('ready.jstree', function() {
$("#treeview").jstree("open_all");
});
http://www.jstree.com/api/#/?q=.jstree%20Event&f=ready.jstree
Si vous souhaitez ouvrir tous les nœuds lors du chargement de l'arborescence:
$("#treeview")
// call `.jstree` with the options object
.jstree({
"plugins" : ["themes", "html_data","ui","crrm","sort"]
})
.bind("loaded.jstree", function (event, data) {
// you get two params - event & data - check the core docs for a detailed description
$(this).jstree("open_all");
})
});
toutes les réponses ci-dessus ne fonctionnent pas dans mon espace de travail. J'ai cherché à nouveau et je trouve ce lien ( Pourquoi jsTree open_all () ne fonctionne-t-il pas pour moi? ) est utile, et poste ma réponse:
version jstree: 3.0.0-bata10
$(document).ready(function() {
$("#tree").bind("loaded.jstree", function(event, data) {
data.instance.open_all();
});
$("#tree").jstree();
})
utiliser un code simple
$(".jstree").jstree().on('loaded.jstree', function () {
$(".jstree").jstree('open_all');
})
Lorsque vous utilisez des données html 'vous pouvez définir la classe jstree-open sur n'importe quel élément <li> pour le rendre initialement étendu, afin que ses enfants soient visibles.' - https://www.jstree.com/docs/html/
<li class="jstree-open" id="node_1">My Open Node</li>
Vous pouvez également appliquer une animation à l'ouverture et à la fermeture comme suit:
$(document)
.on("click", "#open-all-folders", function () {
// param1 set to null to open/close all nodes
// param2 is the duration in milliseconds
$("#tree-ref").jstree().open_all(null, 200);
})
.on("click", "#close-all-folders", function () {
$("#tree-ref").jstree().close_all(null, 200);
});
(ou s'appliquent de la même manière à .on('ready.jstree', function() { // code here }
);
J'ai essayé toutes les réponses ici et elles ne fonctionnaient pas avec jsTree (v3.3.4). Ce qui a fonctionné est le load_node.jstree
un événement:
.on( 'load_node.jstree', function () {
jstree.jstree( "open_all" );
} )