保持树列表的分支

时间:2012-08-23 11:48:07

标签: jquery

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

列表如下:

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

通过提供我选择的元素(第二级li元素),我想删除所有顶级li ,除了这个{{1}属于。

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

4 个答案:

答案 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();
});​