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

发布于 2025-01-19 10:23:35 字数 648 浏览 5 评论 0原文

我成功了一次,但不知何故丢失了原始代码,因为我不是 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);
          });
      }
    })

运行正常,直到我尝试循环兄弟姐妹并取消选中时,任何人都可以帮助我解决下面的代码: 兄弟姐妹(".selected").each(function () { data.instance.check_node(this, 0); });

I did once successfully but somehow lost original code, since I'm not expert in jstree so your help is very much appreciated, below is my attempt:

    .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);
          });
      }
    })

runs OK until when i try to loop siblings and uncheck, can anyone help me on below code: siblings(".selected").each(function () {
data.instance.check_node(this, 0);
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我纯我任性 2025-01-26 10:23:35

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

    .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);
          }
        });
      }
    })

figured out, paste code here in case someone needs reference or give me comment to optimize it, thanks.

    .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);
          }
        });
      }
    })
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文