2010-02-11 3 views

Antwort

36

Sie fragen, warum dies nicht funktioniert :

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

Der Grund dafür ist, .find() werden die Kinder Elemente suchen, Sie .filter() wollen (weil Sie bereits ausgewählt, um die a - oder Sie die :contains zum einem Fund hinzu:

$('div').find('a').filter(':contains("Text2")'); 
$('div').find('a:contains("Text2")'); 
+0

Über '.filter()' vergessen. Vielen Dank. –

+0

Ich frage mich, warum Sie nicht die ursprüngliche Auswahl zu $ ​​('div a: enthält ("Text2")') anstelle der Suche/Filter-Kette? jQuery-Selektoren durchlaufen genauso wie CSS-Selektoren Nachkommen. –

+0

@kevin wegen des Kommentars in der op: 'aus bestimmten Gründen muss es in diesem Format sein' – gnarf

6

Sie suchen contains:

$("a:contains('text2')") 
+0

ich die Frage aktualisiert. –

2

Als zusätzliche Anmerkung, anstatt Scannen nach dem genauen Text in einem Link könnte es besser sein für Attribute zu scannen, z.B.

<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> 

Jetzt können Sie (genau) scannen für:

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

(Ich bin ein großer Fan der Daten- * Attribute.)

+0

Aus irgendeinem Grund muss es im obigen Format sein. Also muss ich es nur vom inneren Text abfragen. –