在jstree中选择子节点时,检查所有父节点
Check all parent nodes when child node is selected in jstree
在jstree中检查子节点时,如何检查所有父节点?
$('#select_cats').jstree({
"core" : {
"themes" : {
"responsive": false
}
},
"types" : {
"default" : {
"icon" : "fa fa-folder icon-state-warning icon-lg"
},
"file" : {
"icon" : "fa fa-file icon-state-warning icon-lg"
}
},
"checkbox": {
"three_state": false
},
"plugins": ["types", "checkbox"]
});
这段代码就是这个问题的解决方案。
当您检查一个节点时,所有节点的父节点都将自动检查
$('#categories').on('activate_node.jstree', function (e, data) {
if (data.instance.is_leaf(data.node)) {
var parentnode = data.node.parent
do {
data.instance.check_node(parentnode)
parentnode = data.instance.get_node(parentnode).parent
} while (parentnode)
}
})
如果您将"three_state"
属性设置为true
,您将检查到根的所有父项,如这里-JS Fiddle
如果您希望同时选择多个项目,以便父项将变为完全选择状态,请将"multiple" : true
添加到树core
配置
您可以使用以下代码:
var selected = instance.get_selected(), i, j;
for(i = 0, j = selected.length; i < j; i++) {
selected = selected.concat(instance.get_node(selected[i]).parents);
}
selected = $.vakata.array_unique(selected);
selected.pop('#');
所有选定的具有父节点的节点都在selected
变量中
https://groups.google.com/forum/#!topic/jstree/6rICTokWciU
JsTree 3.3.6我通过以下方式获得了它:
// bind to events triggered on the tree
$('#ID_OF_TREE').on("changed.jstree", function (e, data) {
var selected = [];
for (i = 0; i < data.selected.length; i++) {
selected = selected.concat($('#ID_OF_TREE').jstree(true).get_path(data.selected[i], false, true));
//first false=I want an array; second true=I want only IDs
}
selected = selected.unique();
console.log(selected);
});
Array.prototype.unique = function () {
return Array.from(new Set(this));
}
使用此答案删除重复项并遵循文档。
每次选中任何复选框,它都会获取所有选中复选框的所有父项,并将它们推送到selected
数组中。最后,它将删除来自已检查的可能性的重复项(这将导致数组中其父项的多个ID)。data.selected
是来自JsTree更改事件的数组。
显然,您可以将此代码绑定到任何您想要的位置,只需将data.selected
替换为
var all_selected = $('#ID_OF_TREE').jstree(true).get_selected();
相关文章:
- 在自定义截面树中获取父节点
- 如何检查DOM节点是否继承自构造函数
- Angular UI路由器-检查父状态
- 如何避免在取消选中子节点时取消选中父节点
- 如果未选中子节点,则未选中父节点
- 仅使用某些子节点访问xml中父节点的子节点
- 如何以编程方式在 jsTree 中选择一个节点并打开所有父节点
- 使用Javascript设置带有子节点的父节点的类's文本等于.
- 如何确定父节点是否有子节点
- Javascript在没有jQuery的情况下获取X父节点
- 如何从wijmo-flex网格的树视图中的节点转到父节点
- 在没有 jquery 的情况下更改子节点(父节点具有 ID)中的链接文本
- 我怎么能"“检查/取消检查”;节点”;“子/父”;独立于JSTree
- 在角度IVH树视图中选择节点时检查所有父节点
- JSTREE 检查父节点
- 如何在Kendo TreeView中检查父节点的子节点是否已检查
- 在jstree中选择子节点时,检查所有父节点
- 检查父节点是否包含ChildNodes
- 检查每个树视图节点是否来自同一父节点
- 剑道angularjs树视图,默认防止父节点检查