2012-09-12 261 views
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/

+0

你可以在这里做一件事。为什么你没有一个拥有backgroundColor的类,然后当你动态地添加表时,包括它的td类。但是这可能会变得太乏味。但是我也不认为脚本看起来很糟糕! –

+0

_header_表可以动态更改,因此它不是每次都是获取背景颜色的同一天的列。 它确实不是一个糟糕的脚本,因为它可以工作(最后一句话),但感觉它可以被优化。 – XIII

回答

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所以只操纵这些表,否则如果有您网页上的任何其他表格也会发生变化。

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

0

你也可以考虑只使用CSS3 col和n-child。参见实施例用红色的cols:

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

Col elements

+0

该解决方案显然不适用于我(最新的Chrome版本)。它还需要在IE 8中工作,也许还需要在未来的IE 7中工作。 – XIII

+0

它在IE8中不起作用。它可以在Chrome中工作,也许我粘贴了错误的链接 – pdjota

+0

当我打开小提琴时也不在IE 10中。 我注意到更新的小提琴,但它只是将颜色添加到第一个表格,而不是将它们复制到其他表格。 – XIII

相关问题