2012-09-12 314 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

相關問題