2009-12-10 4 views
5

J'ai une balise d'ancrage avec du texte et je veux vérifier si le var donné correspond exactement à la chaîne.jQuery texte match

Cela fonctionne, mais je voudrais utiliser autre chose que contient, car il va correspondre à deux éléments si le contenir la chaîne donnée. Je veux que ça corresponde exactement.

Des idées?

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

Répondre

15

Vous pouvez utiliser la fonction .filter() au lieu du filtre :contains pour appliquer un filtre personnalisé à votre jeu de résultats de sélecteur.

Dans ce cas, appliquez un filtre personnalisé pour rechercher du texte avec une correspondance exacte. Quelque chose comme:

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

Si l'espace blanc des limites doit être ignoré, modifiez-le comme suit: $ .trim ($ (this) .text()) == sous-menu – micahwittman

2

Est-ce que vous cherchez:

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

Cependant, je ne suis pas sûr de ce que vous entendez par « Cela fonctionne, mais je voudrais utiliser autre chose que contient, car il va correspondre à deux éléments si le contient la chaîne donnée, je veux qu'elle corresponde exactement. "

+1

Vous souhaitez probablement remplacer '=' par '=='. ;) –

+0

si sous-menu = 'Nouvelles', il apparaîtrait un lien avec le texte 'News' et 'Testing News', appliquant donc le css aux deux. – Gabe

+2

ou mieux encore: === – cobbal