2011-10-04 2 views
7

私は、DOMの一部の隠し要素をすべて削除したいと思いますが、特定のクラスの下に隠されたアイテムをすべて保存しています。ここでJQueryでいくつかのDOM要素を除くすべてを削除するには?

あなたが持っている(非)working example

CSS
<div id="init"> 
    <input type="hidden" name="x" value="y" /> 
    <ul> 
     <li>Hello</li> 
     <li>Bye</li> 
     <li class="block"> 
      <ol> 
       <li>First</li> 
       <li>Second</li> 
       <li>Third</li> 
      </ol> 
     </li> 
     <li>Test</li> 
    </ul> 
</div> 

:だからli { "display:none" }

が、私はブロッククラスを持っているものを除き、すべての隠されたアイテムを削除し、セレクタを探していますまたはブロッククラスの下にあります。この場合、期待される結果は次のようになります。

<div id="init"> 
    <ul> 
     <li class="block"> 
      <ol> 
       <li>First</li> 
       <li>Second</li> 
       <li>Third</li> 
      </ol> 
     </li> 
    </ul> 
</div> 

私は遊んでいます:演算子ではありませんが、成功しません。

+0

です木? –

+0

全体のサブツリーはそのまま残る必要があります – Ivan

答えて

8

あなたはこのように意味ですか?

また
$(':hidden').not('.block, .block *').remove(); 

:あなただけの要素直接の親が特定のクラスを持っている、またはあなたが親を旅行する必要がありますされているかどうかを確認したいと思います

$(':hidden:not(.block, .block *)').remove(); 

しかし$.fn.not()little more reliable than :not()

+0

'$( 'div:not(:has(video))')'を '.not'と' .has'に置き換えることはできますか? –

+0

@IulianOnofrei、別の質問がある場合は、ページの上部にある[Ask Question]ボタンを使用してください(SOガイドラインを満たしていると仮定します)。 – zzzzBov

0

あなたは実際にはCSSを使用することができます。

li.block, li.block li { display: block } 

Example


以上の包括的な

li.block, li.block>* * { display: block } 
関連する問題