我试图基于它是根节点还是子节点之一,在我的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
});
答案 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>