我使用以下代码在一页上斑马剥离几张表:
$(".events-table tr:even").css("background-color", "#fff");
$(".events-table tr:odd").css("background-color", "#efefef");
这很好用,但偶数/奇数间隔应用于页面上的每个表。我希望每个表都有相同的模式。意思是,对于页面上的每个表,每个表应该在第一行上以相同的颜色开始,然后在第二行上相同。
有什么建议吗?
THX!
答案 0 :(得分:12)
您可以使用表格的选择器,然后找到要着色的行,即:
$(".events-table").each(function()
{
$(this).find("tr:even").css("background-color", "#fff");
$(this).find("tr:odd").css("background-color", "#efefef");
});
答案 1 :(得分: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()
在父元素的基础上执行选择。
答案 2 :(得分: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");
答案 3 :(得分:1)
:odd和:even选择器是特定于jQuery的“扩展”。正如bluenote所提到的,它们似乎在目标类型的所有元素列表中运行(在您的情况下,tr
中的所有.events-table
。
替代方案包括:
通过将table元素作为第二个参数传递来将选择器约束到表上下文$('tr:odd', mytable).css({})
使用“真正的”css nth-child选择器$('.events-table tr:nth-child(even)').css()
,但要注意跨浏览器兼容性问题。
将“奇数”或“偶数”类分配给相应的行并明确定位。
答案 4 :(得分:1)
$("tr:odd").css("background-color", "#bbbbff");
将改变页面上所有表格的奇数行,你可以将另一个表格改为偶数
答案 5 :(得分:0)
尝试向表中添加ID并一次更新一个表。