2010-02-11 14 views

Respuesta

36

Usted pregunta por qué esto no funciona :

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

La razón es, .find() buscará elementos secundarios, desea .filter() (porque Ya seleccionado el a - o se agrega el :contains al hallazgo:

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

Se me olvidó '.filter()'. Gracias. –

+0

Me pregunto por qué no cambió el selector inicial a $ ('div a: contiene ("Texto2")') en lugar de la cadena Buscar/Filtrar? Los selectores de jQuery atraviesan descendientes al igual que los selectores de CSS. –

+0

@kevin por el comentario en la op: 'de algunas razones es necesario estar en este formato' – gnarf

6

Usted está buscando contains:

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

He actualizado la cuestión. –

2

Como una nota adicional, en lugar de exploración de texto exacto dentro de un enlace que podría ser mejor que se escanea para los atributos, por ejemplo,

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

Ahora se puede (precisión) para escanear:

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

(Soy un gran fan de los atributos Data- *.)

+0

Por alguna razón, debe estar en el formato anterior. Entonces debo consultarlo solo desde el texto interno. –

Cuestiones relacionadas