Select jsTree节点不触发select_node事件
Select jsTree node without triggering select_node event
我有一个 jsTree,当用户点击一个节点时,它会触发 select_node 事件。但是,我还有一个列表,其中包含一些带有 jsTree 中节点 ID 的条目。在 selecting 此列表中的条目时,我只需要 select 树中的节点,但不触发 select_node 事件。根据文档,select_node api 有 3 个参数
https://www.jstree.com/api/#/?q=(&f=select_node(obj [,
supress_event, prevent_open])
obj:混合一个数组可以用来[=44=]多个节点
supress_event:
布尔值,如果设置为 true
,则不会触发 changed.jstree
事件
prevent_open:
布尔值如果设置为 true
selected 节点的父节点将不会被打开
但是,它并没有谈到抑制select_node事件。有什么建议吗?
我在这里看到两个选项:
- 在您手动 select 来自代码的节点时暂时禁用您的
select_node
事件处理程序。
- 使用
changed
事件而不是 select_node
事件并使用抑制标志。
我不知道是否有更好的方法来完成它,但我是这样做的:
我没有使用 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);
}
您可以使用以下内容;对我有用
$('#TreeDiv').jstree("select_node", actualId, true);
根据 jsTree 官方文档,select_node
方法接受一个 Boolean
值作为第二个参数,指示是否应抑制相应的事件。参见 this page。
我有一个 jsTree,当用户点击一个节点时,它会触发 select_node 事件。但是,我还有一个列表,其中包含一些带有 jsTree 中节点 ID 的条目。在 selecting 此列表中的条目时,我只需要 select 树中的节点,但不触发 select_node 事件。根据文档,select_node api 有 3 个参数
https://www.jstree.com/api/#/?q=(&f=select_node(obj [, supress_event, prevent_open])
obj:混合一个数组可以用来[=44=]多个节点
supress_event:
布尔值,如果设置为 true
,则不会触发 changed.jstree
事件
prevent_open:
布尔值如果设置为 true
selected 节点的父节点将不会被打开
但是,它并没有谈到抑制select_node事件。有什么建议吗?
我在这里看到两个选项:
- 在您手动 select 来自代码的节点时暂时禁用您的
select_node
事件处理程序。 - 使用
changed
事件而不是select_node
事件并使用抑制标志。
我不知道是否有更好的方法来完成它,但我是这样做的:
我没有使用 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);
}
您可以使用以下内容;对我有用
$('#TreeDiv').jstree("select_node", actualId, true);
根据 jsTree 官方文档,select_node
方法接受一个 Boolean
值作为第二个参数,指示是否应抑制相应的事件。参见 this page。