Javascript 选择jsTree节点而不触发Select_节点事件
我有一个jsTree,当用户单击一个节点时,它会触发select\u node事件。但是,我还有一个列表,其中包含一些带有jsTree中节点id的条目。在选择此列表中的条目时,我只需要从树中选择节点,但不触发select\u node事件。根据文档,选择节点api有3个参数Javascript 选择jsTree节点而不触发Select_节点事件,javascript,jquery,jstree,Javascript,Jquery,Jstree,我有一个jsTree,当用户单击一个节点时,它会触发select\u node事件。但是,我还有一个列表,其中包含一些带有jsTree中节点id的条目。在选择此列表中的条目时,我只需要从树中选择节点,但不触发select\u node事件。根据文档,选择节点api有3个参数 [,, Suppress\u事件,阻止\u打开]) obj:混合阵列可用于选择多个节点 超级事件: 布尔值如果设置为true则已更改。jstree事件将不会触发 防止打开: 如果设置为true则所选节点的父节点将不会打开 但
[,, Suppress\u事件,阻止\u打开]) obj:混合阵列可用于选择多个节点
超级事件: 布尔值如果设置为
true
则已更改。jstree
事件将不会触发防止打开: 如果设置为
true
则所选节点的父节点将不会打开但是,它没有提到抑制select\u节点事件。有什么建议吗?我在这里看到两个选项:
select\u节点
事件处理程序changed
事件代替select_节点
事件并使用superss标志我不知道是否有更好的办法,但我是这样做的: 我没有使用select_node函数,而是编写了一个函数,它获取节点的ID,然后打开它,将其设置为selected,然后递归地打开父节点
$('#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
值作为第二个参数,该参数指示是否应抑制相应的事件。请参阅。为什么要阻止触发此事件?因为我只想在从列表中进行选择时突出显示此条目。我认为您应该发布代码better JSFIDLE,以澄清您的问题。此操作仅适用于jstree,如果jstree已完成加载,请参阅抱歉这么晚才接受此操作。我使用了第二个选项。Changed
对我也有效,尽管我不太清楚为什么。