gpt4 book ai didi

javascript - 删除 jstree 中的根节点会分离事件监听器

转载 作者:行者123 更新时间:2023-11-28 07:42:47 24 4
gpt4 key购买 nike

我想通过删除所有根节点并使用ajax读回结构来重新创建jstree。如果我使用:

$("#tree").jstree("destroy");

然后重新创建 jstree 实例:

$("#tree").jstree({ "core": {"check_callback" : true} });

它绘制了一个新的 jstree。我添加了来自 ajax 的 json 信息,但是当我单击根节点时,事件监听器不再工作。

这是有效的解决方法:

var ref = $("#tree").jstree(true);          // get an existing instance
var nodes = ref.get_node("#").children; // -1 didn't work, so I used "#"
while (nodes.length > 0){
ref.delete_node(nodes[0]);
}

“destroy”方法中是否缺少任何参数,该方法将允许事件监听器与新的 jstree 实例连接回?

最佳答案

不,这是不可能的,因为 destroy 函数“从 DOM 中删除 jstree 的所有痕迹并销毁所有实例”( jstree documentation ):这意味着组成 jstree 的 jquery 对象是实际上已删除,并且它们带走了所有事件监听器。

我不知道你想完成什么,但如果你需要使用 destroy,则必须在重新创建树后再次重新添加所有监听器。

否则你应该尝试找到一种非破坏性的方式来完成你的工作,通常有一种,除了极少数情况外,核武器选项从来都不是一个真正的好主意。

关于javascript - 删除 jstree 中的根节点会分离事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27825064/

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