web-dev-qa-db-ja.com

jQueryで特定の内部HTML値を持つすべてのリンクを取得する

<div>
    <a>
       Text1
       <img alt="" stc="" />
    </a>
    <a>
       Text2
    </a>
 </div>

text=text2が含まれるすべてのアンカー要素を選択したい。私はこのようなものを探しています:

$('a[text=Text2]')

編集:なぜこれが機能しないのですか?何らかの理由で、次の形式にする必要があります。

$('div').find('a').find(':contains("Text2")')
23

これが機能しない理由を尋ねます:

_$('div').find('a').find(':contains("Text2")')
_

その理由は、 .find() が子要素を検索するためです .filter()aをすでに選択しているため-または_:contains_を検索に:

_$('div').find('a').filter(':contains("Text2")');
$('div').find('a:contains("Text2")');
_
39
gnarf

あなたが探している 含む

$("a:contains('text2')")
6
Kevin Gorski

:contains()フィルターを使用します。

http://api.jquery.com/contains-selector/

2
Chetan Sastry

補足として、リンク内の正確なテキストをスキャンするよりも、属性をスキャンするほうがよい場合があります。

<div class="farm-market-items">
  <a class="market-item" data-item-type="seed" data-item-id="817">
    Carrot Seed
    <img alt="" src="" class="item-thumb" />
  </a>
  <a class="market-item" data-item-type="seed" data-item-id="25">
    Spinach Seed
  </a>
  <a class="market-item" data-item-type="tree" data-item-id="981">
    Pear Tree
  </a>
</div>

これで、(正確に)以下をスキャンできます。

all_seeds = $('a[data-item-type="seed"]');

(私はdata- *属性の大ファンです。)

2
Amy