3

有一个树形结构,我只想保留一个特定的分支。

清单如下:

ul.level-1
--li
----ul.level-2
------li
------li
--li
----ul.level-2
------li
------li
------li

通过给出我选择的元素(二级li元素),我想删除所有顶级元素,li 除了li所属的元素。

如果不在树内迭代,这可能吗?

4

4 回答 4

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() 。

于 2012-08-23T11:51:00.867 回答
1

试试这个:

$('.level2 li').click(function(){
   $(this).closest('li').siblings().remove()
})
于 2012-08-23T11:56:40.697 回答
1

如果我理解正确,这应该可以满足您的需要:

$('li.selected').closest('li.toplevel').siblings('li').remove();
于 2012-08-23T11:57:22.053 回答
0

试试这个演示

$("li").click(function(){
    $(this).parents("li").siblings().remove();
});​
于 2012-08-23T12:04:46.270 回答