2010-02-25 22 views
38

Tengo una lista de divisiones que contienen una etiqueta p clasificada como index. El contenido textual de estas etiquetas p es un número del 1 al n (aunque probablemente no más de tal vez 30-40). Tenía la siguiente selector, que funcionaba bien en las pruebas preliminares:Elemento de selección basado en contenido de texto EXACTO

var ad = $('.existing_ad .index:contains('+index+')').parents('.existing_ad'); 

Dónde index es el índice numérico que recupera de la etiqueta p y .existing_ad es la clase del padre div. Como dije, esto funcionó bien ... hasta que fui con números más altos. Por ejemplo, cuando el índice es , selecciona .existing_ad s donde el índice TIENE A EN TI, p. 1, 10-19, 21, 31, etc.

¿Cómo puedo obtener SOLAMENTE el índice n?

+0

Desconocer esta distinción puede ocasionar grandes problemas +1 – interpolack

Respuesta

49

¿Qué tal esto:

$('.existing_ad .index').filter(function() { 
    return $(this).text() == index; 
}).parents('.existing_ad'); 
+0

ah sí. mi buen amigo 'filter()'. cuan a menudo me olvido de ti +1, gracias! – Jason

+1

No debería utilizar '===' en lugar de '==' – Medorator

27

Si lo usa mucho, usted podría crear una extensión

$.expr[":"].containsExact = function (obj, index, meta, stack) { 
    return (obj.textContent || obj.innerText || $(obj).text() || "") == meta[3]; 
}; 

$('div:containsExact('John') coincidirá <div>John</div> pero no <div>Johnny</div>

Para la pregunta original , sería

var ad = $(".existing_ad .index:containsExact('"+index+"')").parents('.existing_ad'); 
+6

En mi humilde opinión esta debería ser la respuesta aceptada –

+1

Sí, esto funcionó muy bien para mí. Tenga en cuenta que no tuve que usar comillas alrededor de FTE en lo siguiente: '$ (". Table tr "). Find ('td: first: containsExact (FTEs)'). Text();' – DnfD

+1

En aplicaciones prácticas a veces es útil agregar un '.trim()' después del paréntesis de cierre antes del '== meta [3];' para que coincida independientemente de los espacios en blanco antes y después del texto exacto. – ianmcook

Cuestiones relacionadas