2011-02-05 20 views
2

jQueryセレクターを使用すると、別のセレクターの要素の子孫でないすべての要素を選択できます。指定された要素の子孫でないすべての要素を選択します。

たとえば、でないaのタグをで、thというタグの子孫をすべて選択したいとします。あなたは:notを使用することができますが、子孫を探していると仮定すると、

$('a').filter(function() { 
    return $(this).closest('th').size() == 0 
}) 
+2

兄弟または子孫を意味しますか?あなたのコードは後者を示唆しています – lonesomeday

+0

@lonesomedayが意味するように、** 'a'要素*は' th'要素**の兄弟であることはできません**。あなたは作業しているhtmlを投稿できますか? –

+0

'th'タグの兄弟である' a'タグを持つことは有効ではありません – Petah

答えて

6

th要素に兄弟としてa素子を有することから、有効なHTMLではありません):次のように私は今それを行うには見ることができる唯一の方法です

$('a:not(th a)'); 

これはdocument.querySelectorAllを使用して近代的なブラウザではかなり高速である必要がありますが、IEの古いバージョンのためのオリジナルよりも遅くなる場合があります。これを行うには、疑似セレクタ。

ここに簡単なデモを参照してください:あなたは、あなたの質問は(関係なく、無効なHTML事実の)要求してやると、特定の兄弟を持つ要素をフィルタリングしたいと仮定するとhttp://jsfiddle.net/JR5sP/

+0

なぜ私は ':not 'セレクタがこれをしないと思ったのですか?デモも素晴らしかったです。 – tjwallace

0

をあなたが行うことができますこの:

$('a').filter(function() { 
    return $(this).siblings('b').length == 0; 
}).css('color', 'orange'); 

HTML:

<div> 
    <b>Hello there</b> 
    <a>Don't select me!</a> 
</div> 

<div> 
    <a>Select me!</a> 
    <a>Select me too!</a> 
</div> 

参照http://jsfiddle.net/JR5sP/1/

関連する問題