jQuery根据其中的文本选择元素

时间:2013-11-21 12:09:02

标签: javascript jquery html dom

如何选择其中包含特定文本的标签而不是其他内容?例如,如果我有以下内容:

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

我有什么方法可以选择<td>Asset</td>而不是别的。我尝试使用contains$("table tr td:contains(Play)"),但它返回第二个td中的所有tr(应该如此)。而我只想要<td>Play</td>

有没有办法实现这一点,就像有一种方法可以根据属性选择元素。有没有办法根据里面的文字选择元素?

3 个答案:

答案 0 :(得分:4)

怎么样:

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

<强>演示

Try before buy

答案 1 :(得分:0)

尝试这样的事情:

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

答案 2 :(得分:0)

如果它是一个输入字段,你可以指定类似的东西,但用$('input [name~ =“Plays”])更精确一些,这样它就会过滤掉所有其他字,保持值被隔离。 / p>

除此之外,我知道用表执行此操作的唯一方法是使用您所拥有的内容,还会抛出条件语句来检查其中的文本。

以下是我完成此操作的版本:

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"});
  }
}