2009-10-25 47 views
8

我使用下面的代碼斑馬帶中的一個頁面上幾桌:jQuery的奇/偶選擇器多個元素

$(".events-table tr:even").css("background-color", "#fff"); 
$(".events-table tr:odd").css("background-color", "#efefef"); 

這工作得很好,但偶/奇間隔適用於每在頁面上的表格。我希望每張桌子都有相同的圖案。也就是說,每張表應該在第一行上以相同的顏色開始,然後在第二行上以頁面上的每張表開始。

有什麼建議嗎?

Thx!

回答

0

嘗試將ID添加到您的表中並一次更新CSS一張表。

12

你很可能選擇的表,然後找到行的顏色,即:

$(".events-table").each(function() 
{ 
    $(this).find("tr:even").css("background-color", "#fff"); 
    $(this).find("tr:odd").css("background-color", "#efefef"); 
}); 
+0

測試和工程。 – 2009-10-25 00:40:59

+1

或者只是使用':nth-​​child(odd | even)':) – 2009-10-25 01:29:45

2

的問題是,.events-table tr選擇返回它們是否屬於的tr自主列表同一張桌子。 :even:odd選擇器應用於完整列表。

如果你沒有令人難以置信的大量表,你可以使用ID而不是類。

$("#events-table1 tr:even").css("background-color", "#fff"); 
$("#events-table1 tr:odd").css("background-color", "#efefef"); 
$("#events-table2 tr:even").css("background-color", "#fff"); 
$("#events-table2 tr:odd").css("background-color", "#efefef"); 
+0

更好的解決方案,讓我有選擇地選擇我想要的格式。非常感謝! – Vippy 2013-12-14 03:45:12

6

使用:nth-child():nth-child(odd):nth-child(even)),而不是:odd:even

$("table.events-table tr:nth-child(even)").css("background-color", "#fff"); 
$("table.events-table tr:nth-child(odd)").css("background-color", "#efefef"); 

:odd:even實際上是基於0,這意味着奇數行是0,2,4等,以及反之亦然,並且用於在完整包裝集合中獲得奇數和偶數匹配。

看看this Working Demo來演示。

nth-child()在父元素的基礎上執行選擇。

1

奇數和偶數選擇符是jQuery特定的「擴展名」。正如bluenote內所提到的,他們似乎的目標類型的所有元素(在你的案件清單進行操作,所有tr.events-table

替代品包括:

  • 約束選擇到通過傳遞你的表元素作爲第二個參數$('tr:odd', mytable).css({})

  • 使用「真實」的CSS第n個孩子選擇$('.events-table tr:nth-child(even)').css()雖然提防跨瀏覽器的兼容性問題表上下文。

  • 將「奇數」或「偶數」類指定給相應的行並明確指向。

1
$("tr:odd").css("background-color", "#bbbbff"); 

將改變頁面上的所有表奇數行,你可以把一個又一個甚至