选择jsTree节点而不触发select_node事件



我有一个jsTree,当用户单击一个节点时,它触发select_node事件。但是,我还有一个列表,其中包含一些带有jtree中节点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事件。有什么建议吗?

这里有两个选项:

    当你手动从代码中选择一个节点时,暂时禁用你的select_node事件处理程序。
  1. 使用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值作为第二个参数,该参数指示是否应该抑制相应的事件。

最新更新