如何在选中一个位于同一顶层的节点后取消选中所有其他节点



我曾经成功地做过一次,但不知何故丢失了原始代码,因为我不是jstree方面的专家,所以非常感谢您的帮助,下面是我的尝试:

.on("select_node.jstree", (e, data) => {
const node = data.instance.get_node(data.node, true);
if (!node) {
return;
}
if (node[0].ariaLevel == "1" && node[0].ariaSelected == "true") {
const siblings = node.siblings;
if (siblings.length > 0)
siblings(".selected").each(function () {
data.instance.check_node(this, 0);
});
}
})

运行OK,直到我尝试循环兄弟姐妹并取消选中时,有人能在下面的代码上帮助我吗:兄弟姐妹(".selected"(.each(function(({data.instance.check_node(this,0(;});

想好了,在这里粘贴代码,以防有人需要参考或给我评论来优化它,谢谢。

.on("select_node.jstree", async (e, data) => {
var level = data.node.parents.length;
var selected = data.node.state.selected;
var text = data.node.text; // for info only
var id = data.node.id;
if (level == 1 && selected) {
var tree = $(this.treeContainer).jstree(),
parent = tree.get_node(data.node.parent),
children = parent.children,
siblings = [];
children.forEach(function (child) {
if (child !== id) siblings.push(child);
});
siblings.forEach(function (sibling) {
var sNode = tree.get_node(sibling);
if (sNode.state.selected) {
tree.uncheck_node(sNode);
}
});
}
})

最新更新