我有一个jsTree,当用户点击某个节点时,它会触发 select_node 事件。但是,我还有一个列表,其中包含一些带有jsTree中节点id的条目。在选择此列表中的条目时,我只需要从树中选择节点,但不要触发 select_node 事件。根据文档,select_node api有3个参数
https://www.jstree.com/api/#/?q=(&f=select_node(obj [, supress_event,prevent_open])
obj :混合数组可用于选择多个节点
的 supress_event :
布尔值如果设置为true
,则不会触发changed.jstree
事件
的 prevent_open :
如果设置为true
布尔值,则不会打开所选节点的父节点
但是,它没有讨论抑制 select_node 事件。有什么建议吗?
答案 0 :(得分:2)
我在这里看到两个选项:
select_node
事件处理程序。changed
事件代替select_node
事件,并使用supress标志。答案 1 :(得分:1)
我不知道是否有更好的方法可以实现这一目标,但这就是我如何做到的:
我没有使用select_node函数,而是编写了一个函数,该函数获取节点的ID然后打开它,将其设置为选中状态,然后递归打开父节点。
$('#TreeDiv').jstree(true).open_node(actualId);
$('#TreeDiv').jstree(true).get_node(actualId).state.selected = true;
var parent = $('#TreeDiv').jstree(true).get_parent(actualId);
while (parent.length > 0) {
$('#TreeDiv').jstree(true).open_node(parent);
parent = $('#TreeDiv').jstree(true).get_parent(parent);
}
答案 2 :(得分:1)
您可以使用以下内容;它对我有用
$('#TreeDiv').jstree("select_node", actualId, true);
根据jsTree官方文档,select_node
方法接受一个Boolean
值作为第二个参数,该值指示是否应抑制相应的事件。参见this page。