为多个表着色奇数行

时间:2012-01-06 19:57:08

标签: jquery html

如果我在页面上有多个表,并且我尝试着色奇数行,那么当jQuery确定哪些行是奇数时,jQuery似乎将整个TR组(来自所有表)合并在一起。

参见示例:http://jsfiddle.net/ryjennings/KNmuQ/5/

有没有办法阻止jQuery执行此操作并单独处理每个表?

5 个答案:

答案 0 :(得分:6)

你可以这样做:

$(document).ready(function() {
    $("table").find("TR:even").addClass("odd");
});

基本上,您的原始选择器正在抓取页面上tr个元素中包含的所有table元素的一组,这些元素就是所有元素,然后再抓取其中的所有元素。新的选择器系列首先创建一组所有表,然后创建每个表中的行的子组,然后获取每个子组中的每个其他行。

答案 1 :(得分:1)

你不应该使用Javascript来处理你可以用CSS做的任何事情。 CSS的速度要快几个数量级。您需要的是:nth-child psudo-class

tr:nth-child(odd) { background:#f5f6f8; }

See Fiddle.

答案 2 :(得分:0)

这是你可以做到的一种方式:

$("table").each(function(){
    $("tr:even", this).addClass("odd");
});

答案 3 :(得分:0)

$(document).ready(function() {
    $("table").each(function(){
        $(this).find('TR:even').addClass("odd");
    });
});

答案 4 :(得分:0)

这个处理相对于父表的行,而不是你正在使用的代码...

$(document).ready(function() {
    $("tr:nth-child(even)").each(function() {
        $(this).addClass('odd');
    });
});