我使用Jstree 1.0RC3并且没有让它工作以选择一个节点并让树打开以便该节点可见。 我的代码是这样的:
.jstree({
// List of active plugins
"plugins" : [
"themes","json_data","ui","crrm","dnd","search","types","hotkeys","contextmenu"
//"themes","json_data","ui","crrm","cookies","dnd","types","hotkeys"
],
"json_data" : {
"ajax" : {
"url" : $path + "/server.php",
"data" : function (n) {
return {
"operation" : "get_children",
"id" : n.attr ? n.attr("id").replace("node_","") : <?php echo($jstree_root); ?>
};
}
}
},
},
"core" : {
// just open those two nodes up
// as this is an AJAX enabled tree, both will be downloaded from the server
"initially_open" : [ <?php echo($jstree_root_node); ?> ]
UI插件为空。 php echo($ jstree_root_node)打开根目录下的第一个层级,以便更好地进行概述。有时我想传递应该选择的节点的ID。默认情况下,通过打开树,此节点并不总是可见。我看到的是,如果节点在第一层级中可见,则将选择该节点。如果它更深,则不会被选中。
我在论坛中发现在JSTREE调用之前使用它,但它不起作用:
.bind("reopen.jstree", function () {
$("#demo").jstree("select_node", "#node_1637");
$("#node_1637").parents(".jstree-closed").each(function () {
$("#demo").jstree("open_node", this, false, true);
});
})
关于这个的任何想法?它似乎是在我的鼻子前面,但我没有看到它......
gb5256
答案 0 :(得分:3)
我认为有两种方法可以处理它。
第一个选项 - 使用&#34; initial_open&#34;您需要指定从根到选定节点的所有节点。 jsTree将完成此序列,打开每个节点,加载它的内容,打开下一个节点,加载它的内容等。
脚本的一些基本概念:
"core" : {
"initially_open" : [ < ?php echo implode(',', $path_to_node) ?> ]
}
第二个选项 - 使用&#34;搜索&#34;插件你需要创建一个将由ajax请求调用的PHP脚本,并应返回搜索节点的路径。 所以你定义搜索插件:
'search' : {
'case_insensitive' : true,
'ajax' : {
'url' : 'search_script.php',
'data' : function(n) {
return { search_id : n };
}
}
},
然后在加载树后绑定搜索操作:
$('#tree').bind('loaded.jstree', function(e, data){
$('#tree').jstree('search', <?php echo($jstree_searched_node); ?>);
});
search_script.php应该以与第一个选项相同的方式返回要打开的节点键数组。
它不是完整的复制和粘贴解决方案,但我希望这会带您以正确的方式成功完成它。
答案 1 :(得分:-1)
您可以使用open_all打开所有可用节点。
$( “#TreeID”)jstree( 'open_all');