Kamran Ahmed
Kamran Ahmed

Reputation: 12440

jQuery to select elements based on the text inside them

How to select a tag having a specific text inside it and nothing else? For example if I have the following:

<table>
    <tr>
       <td>Assets</td><td>Asset</td>
    </tr>
    <tr>
       <td>Play</td><td>Players</td><td>Plays</td>
    </tr>
</table>

Is there any way that I may select the <td>Asset</td> and nothing else. I tried it with contains i.e. $("table tr td:contains(Play)") but it returns all the tds in the second tr (as it should). Whereas I just want <td>Play</td>.

Is there any way to achieve this, like there's a way to select elements based on their attributes. Is there any way to select elements based on the text inside them?

Upvotes: 3

Views: 101

Answers (3)

C. S.
C. S.

Reputation: 823

If it was an input field you can specify something similar, but a little more exact with $('input[name~="Plays"]) so that it would filter out every other word, leaving the value isolated.

Other than that, the only way I know of doing this with a table is with what you had, but also throwing a conditional statement to check the text inside them.

Here is my version of accomplishing this:

http://jsfiddle.net/combizs/LD75y/3/

var play = $('table tr td:contains(Play)');
for (var i = 0, l = play.length; i < l; i++) {
  if ($(play[i]).text() === "Play") {
    // your script to modify below
    $(play[i]).css({"color" : "red"});
  }
}

Upvotes: 0

insertusernamehere
insertusernamehere

Reputation: 23600

How about that:

var lookup = 'Asset';
$('td:contains('+ lookup +')').filter(function() {
    return $(this).text() === lookup;
});

Demo

Try before buy

Upvotes: 4

Ankit Tyagi
Ankit Tyagi

Reputation: 2375

Try something like this :

$("table tr td").filter(function() {
    return $(this).text() === "Play";
})

Upvotes: 0

Related Questions