删除树中的节点不会保持其级别
在我借助 jquery 制作的树中,如果我删除父节点,我希望它的直接子节点成为父节点。
但是,如果直系孩子有同一级别的兄弟姐妹,那么所有兄弟姐妹都应该成为根节点。我认为我的示例会更清楚。
- 一个
- b
- c
- d
- e
- b
认为这是我的树 我想要的是,如果我删除 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
- b
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您只需要直接子级(而不是所有后代),因此不要使用
.find ()
使用.children()
在这里,像这样:还要注意使用
.closest()
代替.parent()
与:first
,这只是获取相同元素的更便宜/更短的方法。You only want immediate children (not all descendants), so instead of
.find()
use.children()
here, like this:Also note the use of
.closest()
instead of.parent()
with:first
, it's just a cheaper/shorter way to get the same element.