有一个树形结构,我只想保留一个特定的分支。
清单如下:
ul.level-1
--li
----ul.level-2
------li
------li
--li
----ul.level-2
------li
------li
------li
通过给出我选择的元素(二级li
元素),我想删除所有顶级元素,li
除了它li
所属的元素。
如果不在树内迭代,这可能吗?
有一个树形结构,我只想保留一个特定的分支。
清单如下:
ul.level-1
--li
----ul.level-2
------li
------li
--li
----ul.level-2
------li
------li
------li
通过给出我选择的元素(二级li
元素),我想删除所有顶级元素,li
除了它li
所属的元素。
如果不在树内迭代,这可能吗?
您可以执行以下操作:
$("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() 。
试试这个:
$('.level2 li').click(function(){
$(this).closest('li').siblings().remove()
})
如果我理解正确,这应该可以满足您的需要:
$('li.selected').closest('li.toplevel').siblings('li').remove();
试试这个演示
$("li").click(function(){
$(this).parents("li").siblings().remove();
});