如何在jstree中选择根节点?

时间:2018-08-12 14:50:53

标签: javascript jquery jstree

我试图基于它是根节点还是子节点之一,在我的jstree中嵌入一些功能。 从我经过的jstree文档和其他Stack Overflow帖子中,我现在可以正确地填充项目,但是我遇到了如何在“ select_node”条件下选择jstree根节点的障碍,如下所示片段。将单词“ root”附加到select_node上是否正确?请指教。 (如果必须调用get_parent()并检查如何将根作为参数传递,则我的根项称为“根”)。任何前进的指针将不胜感激。

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

1 个答案:

答案 0 :(得分:1)

select_node.jstree.root不能按预期方式工作,因为它所做的只是为select_node.jstree创建了一个额外的命名空间(请参阅{{3中的事件名称和命名空间”部分}} 了解更多信息)。对于所有select_node.jstree.root个事件,仍会触发select_node.jstree个事件。

相反,您可以检查是否通过data.selected中的select_node.jstree属性选择了根节点。您也可以像这样通过$('#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>