我正在玩一些选择器,而且我在一个单元格中选择Text时会撞墙。
这是我正在做的一个简单的尝试。
<table>
<tr>
<td>First Name</td>
<td>*required</td>
</tr>
</table>
我想将该单元格的类更改为“红色” - 如果找到字符串“* required”。
这是我对jquery的尝试:
$("td:contains('*required')").addClass("red");
它似乎导致所有细胞应用该类。 有没有更好的方法来寻找特定的文字?
答案 0 :(得分:23)
您所做的工作you can test it here,请记住,任何父 <td>
也包含该文字,但要完全匹配这样做:
$("td").filter(function() { return $.text([this]) == '*required'; })
.addClass("red");
答案 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>