Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择jsTree节点而不触发Select_节点事件_Javascript_Jquery_Jstree - Fatal编程技术网

Javascript 选择jsTree节点而不触发Select_节点事件

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则所选节点的父节点将不会打开 但

我有一个jsTree,当用户单击一个节点时,它会触发select\u node事件。但是,我还有一个列表,其中包含一些带有jsTree中节点id的条目。在选择此列表中的条目时,我只需要从树中选择节点,但不触发select\u node事件。根据文档,选择节点api有3个参数

[,, 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
    对我也有效,尽管我不太清楚为什么。