0

我得到了这个工作,但解决方案感觉有点,所以如果有人可以看看它并给出如何优化方法的提示,那就太好了。

我有一个设置了背景颜色的特定起始表。在它下面是没有背景颜色的类似表格,实际上这些表格是为我通过 ajax 检索的数组中的每条记录动态创建的。该脚本的目的是复制结果网格中每一列的背景颜色:

for (var i = 2; i < 34; i++) {
    var c = $('table tr td:nth('+ i + ')').css('background-color');        
    $('table tr td:nth-child('+i+')').css('background-color',c);
}

我现在首先从第一个表中找到背景颜色,然后在循环中复制找到的颜色。

小更新:它至少需要在 IE 8 中工作。

可以在此处找到一个示例:http: //jsfiddle.net/KvdM/9RRfU/

4

2 回答 2

0

您也可以考虑只使用 CSS3 col 和 nth-child。请参阅红色 cols 的示例:

http://jsfiddle.net/pdejuan/9RRfU/5/

Col 元素的附加信息

于 2012-09-12T15:48:46.967 回答
0

以下代码获取表格单元格的第一行并对其进行迭代。它缓存 jQuery 包装的this隐式参数并获取它在表中的列位置以及它的background-color. 接下来,它使用相同的 更新该位置的其余表格单元格background-color

$(function() {
    $( "tr:first td" ).each(function() {
        var $this = $( this ),
            index = $this.index(),
            color = $this.css( "background-color" );

        $( "td:nth-child(" + index + ")" ).css( "background-color", color )
    });
});

​ 这是一个带有上述片段的 jsFiddle... http://jsfiddle.net/fpVuW/

您可能会考虑向表格添加一个特殊类并更新 jQuery,以便它只操作这些表格,否则如果您的页面上有任何其他表格,它们也会被更改。

另一种解决方案是创建一个函数或插​​件,将一个表复制到另一个特定表,然后为每个表调用函数/插件。这样您就可以更好地控制哪些表被更改。

于 2012-09-13T13:14:49.450 回答