使用jQuery统一格式化各种表中的单元格选择

时间:2012-03-13 19:55:21

标签: jquery html-table formatting jquery-selectors

我有一个包含多个表的页面,我想格式化每个表,以便每个其他行的第二个单元格具有特定的背景颜色。 我在回答这个问题的初始版本时尝试了以下jQuery代码:

   $('table tr:odd td:nth-child(2)').css("background-color", "#F6F3EE");

只要所有表具有偶数行,这都可以正常工作。如果不是这种情况,格式化将被反转,就好像jQuery认为s是一个表的一部分并且不会在每个表重新启动计数器。

这是一个js小提琴的链接来说明问题:

http://jsfiddle.net/davidThomas/eAHUF/

3 个答案:

答案 0 :(得分:3)

您只选择了td行后代的第一个tr.reg:even元素。

尝试使用:nth-child()替代方案:

$('table tr:odd td:nth-child(2)').css('background-color','#ffa');​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

JS Fiddle demo

注意:您必须记住,CSS :nth-child()是基于一个的,而不是基于零的(因为JavaScript)。


已编辑以回应OP的评论,如下所示:

  

......但它给我带来了一个问题。我编辑了你的jsfiddle演示,在第一个表中添加一行,从而给它一个不均匀的行数。现在第二个表的行被反向突出显示,这不是我想要的。你有解决方法吗?

是的,我......错过了明显的(某种程度上)。我修改了上面的代码,依次查看每个table,然后查找:odd行和nth-child()

$('table').find('tr:odd td:nth-child(2)').css('background-color','#ffa');​

JS Fiddle demo

参考文献:

答案 1 :(得分:1)

试试这个:

$('table tr.reg:even td:eq(1)').each(function(index) {
    $(this).css("background-color", "#F4F4F8");
});

答案 2 :(得分:1)

最简单的解决方案就是:

$("table tr:even td:nth-child(2)").css("background-color", "#F4F4F8");

您可以在此处看到它:http://jsfiddle.net/rowanmanning/pBCkj/