次のHTMLがあるとします。
<div class="foo">
<ul>
<li>One</li>
<li>Two</li>
</ul>
</div> <!-- not originally here -->
<div class="bar">
<ul>
<li>Three</li>
<li>Four</li>
</ul>
</div>
クラスを持つ要素の子孫ではないli
すべての要素を選択したい。派手なフィルター機能でできるのは知っていますが、セレクターだけでできるのではないかと思います。最初に試しました:foo
$(":not(.foo) li")
残念ながら、にはスタイルのない他の祖先(この場合)li
があるため、これは機能しません。以下はうまくいくようです。ul
$(":not(.foo) :not(.foo) li")
つまり、クラスを持っているか、クラスを持つ独自の祖先を持っている祖先を持たないすべてのli
要素を選択します。おそらくこれがセレクターでそれを行うための最良の/唯一の方法ですが、私はセレクターの繰り返しにわくわくしていません。そこにもっと良いアイデアはありますか?foo
foo
:not