jQuery跨多个表的交替行颜色
我注意到严格使用jquery交替行颜色的问题。 你可以看看这个小提琴 ,看一下我将要描述的例子。
我正在使用CSS3来控制表格上的条带化,这些表格在多个表格中按预期工作。
.table-zebra tbody > tr:nth-child(even) > td {background-color: lightgrey;}
每个偶数行都是浅灰色条纹。 计数从第一行开始。
对于不支持CSS3的浏览器,我使用jquery来模仿这个:( .table-striped用于此示例以显示小提琴的差异)
$(".table-striped tr:odd").css("background-color", 'lightgrey');
当我有多个具有奇数行的表时,jquery将继续前一个表的计数,这会错误地交替行。
除了使用$ .each之外,还有一种更简单的方法可以在jquery中处理它吗?
据我所知, :odd
应用于所有
,因此你得到你描述的行为。 我不认为有任何方法可以改变它并使:odd
相对于当前.table-striped
:odd
除了使用.each()
。
对于这种特殊情况,虽然有一个解决方法:nth-child
:
$(".table-striped tr:nth-child(:odd)").css("background-color", 'lightgrey');
虽然如果特定
是其直接父项的奇数子项,则适用,因此如果
包含多个
s,则可能会执行错误操作。
CSS:
tr.even td { background-color: green; } tr.odd td { background-color: yellow; }
JS:
$('.table-striped > tbody').each(function () { $('tr:odd', this).addClass('odd').removeClass('even'); $('tr:even', this).addClass('even').removeClass('odd'); });
在这里演示