我正在使用以下代码:
$("#treeview").jstree();
$("#treeview").jstree('open_all');
使用以下html:
<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>
我的问题是所有节点都保持关闭状态,我无法用jstree打开它们('open_all');
答案 0 :(得分:56)
jsTree documentation是“次优”。文档没有明确说明初始化是异步工作的。有core.loaded():
虚拟函数,其目的仅是触发加载的事件。加载树的根节点后,但在initial_open中设置的任何节点打开之前,会触发此事件。
这表明在设置树之后会触发事件loaded.jstree
。您可以挂钩该事件以打开所有节点:
var $treeview = $("#treeview");
$treeview
.jstree(options)
.on('loaded.jstree', function() {
$treeview.jstree('open_all');
});
答案 1 :(得分:26)
我正在使用jstree和Chrome的第3版。加载的事件对我来说不起作用,但即使在创建了jstree实例之后,ready事件仍然有效:
$('#treeview').on('ready.jstree', function() {
$("#treeview").jstree("open_all");
});
http://www.jstree.com/api/#/?q=.jstree%20Event&f=ready.jstree
答案 2 :(得分:18)
如果要在加载树时打开所有节点:
$("#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");
})
});
答案 3 :(得分:9)
上面的所有答案都不适用于我的工作区。 我再次搜索并发现此链接(Why doesn't jsTree open_all() work for me?)很有帮助,并发布我的回答:
jstree版本:3.0.0-bata10
$(document).ready(function() {
$("#tree").bind("loaded.jstree", function(event, data) {
data.instance.open_all();
});
$("#tree").jstree();
})
答案 4 :(得分:1)
使用简单的代码
$(".jstree").jstree().on('loaded.jstree', function () {
$(".jstree").jstree('open_all');
})
答案 5 :(得分:1)
使用html数据时,你可以在任何&lt; li&gt;上设置jstree-open类。元素使它最初扩展,以便它的孩子是可见的。 - https://www.jstree.com/docs/html/
<li class="jstree-open" id="node_1">My Open Node</li>
答案 6 :(得分:0)
我在这里尝试了所有答案,但他们没有使用jsTree(v3.3.4)。有效的是load_node.jstree
事件:
.on( 'load_node.jstree', function () {
jstree.jstree( "open_all" );
} )
答案 7 :(得分:0)
您也可以像这样将动画应用于开合:
$(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);
});
(或类似地适用于.on('ready.jstree', function() { // code here }
);
答案 8 :(得分:-1)
.bind("loaded.jstree", function (event, data) {
// you get two params - event & data - check the core docs for a detailed description
$(this).jstree("open_all");
})