2009-09-16 18 views
24

jQueryのテキストに基づいて要素を選択する必要があります。例えばjQueryはテキストに基づいて選択します

<span>this text</span> 

私はテキストに基づいて選択するように)(.containsを使用することができます知っているが、それは排他的ではありません。

私は選択したくない:

<span>this text and that text</span> 

私はそれが要素のテキストのみだ場合、要素を選択します。

regexを使用する以外に、jQueryセレクタでこれをどうやって行うのですか?

ありがとうございました。

答えて

34

:containsセレクタでいくつかの活用方法がありますが、これまでのところしかありません。あなたはのように、さらに正確なテキストの一致に基づいて要素の集合をダウントリムする必要があります。

$("span:contains(this text)") 
.filter 
(
    function() 
    { 
    return $(this).text() === "this text"; 
    } 
) 

これは、初期には使用量が技術的に不要に含まれていますが、あなたはの小さな集まりで出開始することにより、パフォーマンス上の利点を経験することSPAN要素は、正確なセットにダウンフィルタリングする前に、あなたは興味を持っている

EDITは:filter関数内で文字列の比較のために代わりinnerHTMLtext()機能を使用するためにケンブラウニングの提案を取りました。考えられるのはinnerHTMLで、私たちが特に関心のないテキスト(マークアップを含む)をキャプチャします。

+4

良い答えですが、なぜ '$(this).text()'の代わりに 'innerHTML'を使うのですか? 「innerHTML」を使用しないと、条件に符号化する必要のある文字が含まれているケースが含まれます(&&> &) –

+0

ニックピッキングの場合、+1と回答を回答に付けました。 –

+0

@DavidAndres 'innerHTML'の代わりに' .text() 'より速くマークアップを含まない' innerText'を使うこともできます。 – hitautodestruct

関連する問題