Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Select link by text (exact match)

Using jQuery, I want to select a link that contains exactly some kind of text. For example:

<p><a>This One</a></p>
<p><a>"This One?"</a></p>
<p><a>Unlikely</a></p>

I have tried this:

$('a:contains("This One")')

But it picks the first AND the second link. I just want the first link, which contains exactly "This One". How can I do that?

like image 436
Endy Tjahjono Avatar asked Jul 13 '11 03:07

Endy Tjahjono


2 Answers

You can do this:

$('a').filter(function(index) { return $(this).text() === "This One"; }); 

Reference: http://api.jquery.com/filter/

like image 145
FishBasketGordo Avatar answered Sep 28 '22 04:09

FishBasketGordo


A coworker of mine extended jQuery with a function to do this:

$.expr[':'].textEquals = function(a, i, m) {
    return $(a).text().match("^" + m[3] + "$");
};

The result is that you can select something by exact text this way:

$("label:textEquals('Exact Text to Match')");

This makes it easy, since you don't have to remember the exact syntax each time. His entire post is here: jQuery Custom Selector for selecting elements by exact text :textEquals

like image 42
Narnian Avatar answered Sep 28 '22 02:09

Narnian