$(“。rowchange tr:even”)。addClass(“even”)在多个表中

时间:2013-01-11 09:56:34

标签: jquery

我正在使用这个很好的litte jQuery Scritp来改变表行的类:

$(".rowchange tr:even").addClass("even");

但是当我在同一页面上使用多个表时,结果可能是这样的:

<table class="rowchange">  
<tr class="even"><td>...</td></tr>  
<tr><td>...</td></tr>   
<tr class="even"><td>...</td></tr>  
</table>  
...
<table class="rowchange">
<tr><td>...</td></tr>
<tr class="even"><td>...</td></tr>
<tr><td>...</td></tr>
</table>  

如何让它工作,所有表格都以<tr class="even">开头?

3 个答案:

答案 0 :(得分:2)

您必须遍历每个table并将该脚本分别应用于每个脚本:

$(".rowchange").each(function () {
    $(this).find("tr:even").addClass("even");
});

这是因为:even选择器正在应用于匹配集中的所有元素,而这将是tr元素后代的所有.rowchange元素。它不会考虑这些祖先.rowchange元素之间的差异。

这是working example

答案 1 :(得分:0)

如果您使用table作为主要选择器,find()您的订购将是正确的。

$('table.rowchange').find('tr:even').addClass("even");

答案 2 :(得分:0)

您也可以使用此选择器选择它:

$(".rowchange").find("tr:even").addClass("even");

这是jsFiddle example