删除树中的节点不会保持其级别

发布于 2024-10-09 13:15:20 字数 541 浏览 1 评论 0原文

在我借助 jquery 制作的树中,如果我删除父节点,我希望它的直接子节点成为父节点。

但是,如果直系孩子有同一级别的兄弟姐妹,那么所有兄弟姐妹都应该成为根节点。我认为我的示例会更清楚。

  • 一个
    • b
      • c
    • d
    • e

认为这是我的树 我想要的是,如果我删除 a 而不是 b、d、e 应该成为单独的根节点 c 应该位于 b 之下。

我正在粘贴我的代码,它确实实现了根节点,但是 它使c与b处于同一水平。

       var liFirst = $(spnElement).parents('li:first');
        $(childPrsnt).insertBefore(liFirst);

        $(spnElement).parents('li:first').remove();
        $(childPrsnt).find('li').unwrap('ul:first');

in my tree that i am making with the help of jquery, if i remove the parent node i want its immediate children to become the parent.

But if the immediate children have sibling/siblings at same level than all the sibling should become a root node .i think it would be more clear with my example.

  • a
    • b
      • c
    • d
    • e

consider this as my tree
what i want is if i remove a than b,d,e should become individual root node
and c should come under b.

i am pasting my code it does achieve the root node thing but
it make c as the same level of b.

       var liFirst = $(spnElement).parents('li:first');
        $(childPrsnt).insertBefore(liFirst);

        $(spnElement).parents('li:first').remove();
        $(childPrsnt).find('li').unwrap('ul:first');

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

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

发布评论

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

评论(1

白云悠悠 2024-10-16 13:15:20

您只需要直接子级(而不是所有后代),因此不要使用 .find () 使用 .children()在这里,像这样:

var liFirst = $(spnElement).parents('li:first');
$(childPrsnt).insertBefore(liFirst);

$(spnElement).closest('li').remove();
$(childPrsnt).children('li').unwrap();

还要注意使用 .closest() 代替.parent():first,这只是获取相同元素的更便宜/更短的方法。

You only want immediate children (not all descendants), so instead of .find() use .children() here, like this:

var liFirst = $(spnElement).parents('li:first');
$(childPrsnt).insertBefore(liFirst);

$(spnElement).closest('li').remove();
$(childPrsnt).children('li').unwrap();

Also note the use of .closest() instead of .parent() with :first, it's just a cheaper/shorter way to get the same element.

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