有一种树形结构,我只希望保留一个特定的分支。
列表如下:
ul.level-1
--li
----ul.level-2
------li
------li
--li
----ul.level-2
------li
------li
------li
通过提供我选择的元素(第二级li
元素),我想删除所有顶级li
,除了这个{{1}属于。
如果不在树中迭代,这可能吗?
答案 0 :(得分:1)
您可以执行以下操作:
$("li").click(function() {
var $this = $(this);
$this.closest("ul.level-1").children("li").filter(function() {
return !$this.closest(this).length;
}).remove();
});
首先,closest()用于匹配顶级<ul>
元素。然后,对于其每个子<li>
元素,filter()与closest()
一起使用,以检查所点击的<li>
元素是否是当前列表项的后代,或该列表项本身。这会排除单击项目的分支,并在其余部分调用remove()。
答案 1 :(得分:1)
试试这个:
$('.level2 li').click(function(){
$(this).closest('li').siblings().remove()
})
答案 2 :(得分:1)
如果我理解正确,这应该做你需要的:
$('li.selected').closest('li.toplevel').siblings('li').remove();
答案 3 :(得分:0)
试试这个demo
$("li").click(function(){
$(this).parents("li").siblings().remove();
});