2011-05-12 69 views
2

我想使用查詢來設置html表的交替行的顏色。但每次我添加一個新行查詢切換整個表的顏色。下面是javascript代碼我使用:使用jquery設置備用行的顏色?

var alternate = true; 
function addRow(data) { 
    if(alternate){ 
     $("table.live_feed").find('tbody.main').prepend(data).css("background", "#f1f1f1"); 
     alternate = false; 
    }else{ 
     $("table.live_feed").find('tbody.main').prepend(data).css("background", "white"); 
     alternate = true; 
    } 
} 

PS:我看起來他們改變奇數或偶數行的顏色計算器上一些類似的問題。我不想改變已經存在的行的顏色,我只想改變添加的新行的顏色。

感謝您的任何幫助。

+0

可能重複在jquery中着色](http://stackoverflow.com/questions/979669/alternate-row-coloring-in-jquery) – Kredns 2011-05-12 20:37:41

+2

你可能會發現最簡單的方法是向這些新添加的行添加一個類'class =「new」' (例如),並使用'$('tr.new:nth-child (odd)')'等選擇器來定位這些新添加行的奇數行。 – 2011-05-12 20:37:56

+1

你爲什麼只想考慮「新行」?當然,表中的所有行都有斑馬條紋?僅考慮新行就會讓它變得更加複雜。 – thirtydot 2011-05-12 20:39:03

回答

5

.css作用於找到的項目(tbody.main),而不是你希望它作用於數據:

var data = $(data).css("background", "#f1f1f1"); 
$("table.live_feed").find('tbody.main').prepend(data); 

作爲一個側面說明,對於交替行的顏色,你可以利用選擇:odd:even

實施例:

$('tr:odd').css('background', 'lightgray'); 
[備用行的
1

prependappend和其他DOM插入方法不會返回剛剛創建的元素,而是您調用它們的jQuery對象。 在您的代碼中,css調用應用於tbody.main jQuery對象。

在此示例中,您可以看到append調用的返回元素是如何使用test id的div元素。

http://jsfiddle.net/marcosfromero/VUrhZ/

在相同的例子,你可以看到一個解決方法適用於cssprepend使用first()剛插入的元素。