2009-12-10 10 views
5

Tengo una etiqueta de anclaje con texto y quiero comprobar si la var dada coincide exactamente con la cadena.jQuery coincidencia de texto

Esto funciona, pero me gustaría usar algo que no sea contiene, ya que coincidirá con dos elementos si contienen la cadena dada. Quiero que coincida exactamente.

¿Alguna idea?

function test(submenu){ 
$('a:contains("' + submenu + '")', 'ul.subMenu li').css('font-weight', 'bold'); 
} 

Respuesta

15

Puede usar la función .filter() en lugar del filtro :contains para aplicar un filtro personalizado a su conjunto de resultados del selector.

En este caso, aplique un filtro personalizado para buscar texto con una coincidencia exacta. Algo como:

$('a').filter(function (index) { 
    return $(this).text() == submenu; 
}) 
    .css('font-weight', 'bold'); 
+1

Si se debe ignorar el espacio en blanco de los límites, simplemente modifíquelo como tal: $ .trim ($ (this) .text()) == submenu – micahwittman

2

Es esto lo que está buscando:

function test(submenu) 
{ 
    if ($("ul.submenu li a").text() == submenu) 
    { 
     // do whatever here 
    } 
} 

Sin embargo, no estoy seguro de lo que quiere decir con "Esto funciona, pero me gustaría utilizar algo más que contiene, ya que coincidirá con dos elementos si contienen la cadena dada. Quiero que coincida exactamente ".

+1

Probablemente quiera reemplazar '=' con '=='. ;) –

+0

if submenu = 'News', entonces coincidiría con un enlace con el texto 'News' y 'Testing News', por lo tanto, aplicando el CSS a ambos. – Gabe

+2

o mejor aún: === – cobbal

Cuestiones relacionadas