jquery在里面找到文字

时间:2010-11-01 21:56:29

标签: jquery jquery-selectors

我正在玩一些选择器,而且我在一个单元格中选择Text时会撞墙。

这是我正在做的一个简单的尝试。

<table>
 <tr>
     <td>First Name</td>
     <td>*required</td>
  </tr>
</table> 

我想将该单元格的类更改为“红色” - 如果找到字符串“* required”。

这是我对jquery的尝试:

$("td:contains('*required')").addClass("red");

它似乎导致所有细胞应用该类。 有没有更好的方法来寻找特定的文字?

3 个答案:

答案 0 :(得分:23)

您所做的工作you can test it here,请记住,任何 <td> 也包含该文字,但要完全匹配这样做:

$("td").filter(function() { return $.text([this]) == '*required'; })
       .addClass("red");

You can test it here

答案 1 :(得分:5)

您可以随时使用$.filter(),其中只有回调返回true的元素才会包含在选择中。例如:

$('td').filter(function(i) {
    $(this).html().indexOf('*required') >= 0;
});

另外:为了提高效率,还要因为Nick的回答,你需要更加具体地选择你的选择器。虽然如果你正在考虑效率,你最好不要使用首先使用回调的方法。 :)

就选择器而言,请考虑使用$('#tableID > tr > td')...或类似的东西。

答案 2 :(得分:-2)

您不应该使用JavaScript来执行此操作。您应该使用的是CSS类:

<table>
 <tr>
     <td>First Name</td>
     <td class="required">*required</td>
  </tr>
</table> 


<style type="text/css">
td.required {
    color:red;
}
</style>