gpt4 book ai didi

jstree 预选节点并打开所有需要的父节点

转载 作者:行者123 更新时间:2023-12-01 15:20:42 25 4
gpt4 key购买 nike

我使用 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);
});
})

对此有什么想法吗?它似乎就在我的 Nose 前面,但我没有看到它......

gb5256

最佳答案

我认为有两种方法可以处理它。

第一个选项 - 使用“initially_open”,您需要指定从根节点到选定节点的所有节点。 jsTree 将经历这个序列,打开每个节点,加载它的内容,打开下一个节点,加载它的内容等。

脚本的一些基本思想:

"core" : { 
"initially_open" : [ < ?php echo implode(',', $path_to_node) ?> ]
}

第二个选项 - 使用“搜索”插件,您需要创建一个 php 脚本,该脚本将由 ajax 请求调用并且应该返回到搜索到的节点的路径。所以你定义搜索插件:

      'search' : {
'case_insensitive' : true,
'ajax' : {
'url' : 'search_script.php',
'data' : function(n) {
return { search_id : n };
}
}
},

然后在加载树后绑定(bind)搜索操作:

    $('#tree').bind('loaded.jstree', function(e, data){  
$('#tree').jstree('search', <?php echo($jstree_searched_node); ?>);
});

search_script.php 应该返回要以与第一个选项相同的方式打开的节点键数组。

这不是完整的复制粘贴解决方案,但我希望这能带您走上正确的道路,成功完成它。

关于jstree 预选节点并打开所有需要的父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8476032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com