【问题标题】:How do I select the root node in jstree?如何在jstree中选择根节点?
【发布时间】:2018-08-12 14:50:52
【问题描述】:

我正在尝试根据它是根节点还是子节点之一在我的 jstree 中嵌入一些功能。 从我浏览过的 jstree 文档和其他 Stack Overflow 帖子中,我现在能够正确填充这些项目,但是我在如何在“select_node”条件下选择 jstree 的根节点时遇到了障碍,如下所示sn-p。将单词“root”附加到 select_node 是否正确?请指教。 (我的根项目称为“根”,如果我必须调用 get_parent() 并检查如何将我的根作为参数传递)。任何继续的指针将不胜感激。

$(".myjstree").on("select_node.jstree.root", function (e, data){
// do stuff if this is my root node
});

【问题讨论】:

    标签: javascript jquery jstree


    【解决方案1】:

    收听select_node.jstree.root 无法按预期工作,因为它所做的只是为select_node.jstree 创建一个额外的命名空间(有关更多信息,请参阅http://api.jquery.com/on/ 中的事件名称和命名空间部分) . select_node.jstree.root 事件仍会为所有 select_node.jstree 事件触发。

    相反,您可以通过select_node.jstree 中的data.selected 属性检查是否选择了根节点。您也可以通过$('#jstree').jstree(true).get_node('root') 与它进行交互,如下所示:

    $('#jstree').jstree({
      core: {
        data: [
          {
            id: 'root',
            text: 'Root',
            state: { opened: true },
            children: [
              { id: 'child-node-1', text: 'Child 1' },
              { id: 'child-node-2', text: 'Child 2' }
            ]
          }
        ]
      }
    });
    $('#jstree').on("changed.jstree", function (e, data) {
      if (data.selected.length === 1 && data.selected[0] === 'root') {
        let root_node = $('#jstree').jstree(true).get_node('root');
        console.log(root_node);
      }
    });
    @import "https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/themes/default/style.min.css";
    <div id="jstree"></div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/jstree.min.js"></script>

    【讨论】:

    • 谢谢@Steve!你的例子很有帮助。
    猜你喜欢
    • 2011-02-10
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    相关资源
    最近更新 更多