3

特定のブランチのみを保持したいツリー スタイルの構造があります。

リストは次のようになります。

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

選択した要素 (第 2 レベルの要素) を与えることで、これが属するものを除く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 に答える