2009-12-10 2 views
5

Ich habe eine Anker-Tag mit Text und ich möchte überprüfen, ob die angegebene Var die Zeichenfolge genau entspricht.jQuery Text übereinstimmen

Dies funktioniert, aber ich möchte etwas anderes als enthält verwenden, da es zwei Elemente übereinstimmen wird, wenn die angegebene Zeichenfolge enthalten. Ich möchte, dass es genau übereinstimmt.

Irgendwelche Ideen?

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

Antwort

15

Sie können die .filter()-Funktion anstelle des :contains-Filters verwenden, um einen benutzerdefinierten Filter auf Ihren Selektorergebnissatz anzuwenden.

In diesem Fall wenden Sie einen benutzerdefinierten Filter an, um nach Text mit einer genauen Übereinstimmung zu suchen. Etwas wie:

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

Wenn Begrenzungs-Leerzeichen ignoriert werden sollen, einfach wie folgt: $ .trim ($ (this) .text()) == Untermenü – micahwittman

2

das ist, was Sie suchen:

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

aber ich bin mir nicht sicher, was Sie unter „Das funktioniert, aber ich möchte etwas anderes als verwenden, enthält, da es zwei Elemente enthält, wenn die angegebene Zeichenfolge enthalten ist. Ich möchte, dass sie genau übereinstimmt. "

+1

Sie möchten wahrscheinlich '=' mit '==' ersetzen. ;) –

+0

wenn submenu = 'News', dann würde es einen Link mit dem Text 'News' und 'Testing News' finden, also die css auf beide anwenden. – Gabe

+2

oder besser noch: === – cobbal