2011-08-19 58 views
2

我有以下两个表和jQuery:如何针对多类元素与jQuery

<table class="grid" /> 
<table class="grid custom" /> 

$('.grid tr:even').addClass('alt'); 

这里发生的事情是,这两个表被jQuery的针对性。第一个表格很好,因为正在选择偶数行,但是在第二个表格上选择了奇数。

表1(网格)
第1行
行2 - 背景颜色(这是正确的)

表2(网格定制)
第1行 - 背景颜色(这是错误的)
行2

我该如何解决这个问题?

回答

3

http://jsfiddle.net/Ftk5n/

的问题是,$('.grid tr:even')选择是应用:even标准来设定由.grid tr返回的所有行。您希望:even以每个表为基础应用。

顺便说一句,你可以在CSS纯粹做到这一点:http://jsfiddle.net/ahf9q/1/

编辑:原来jQuery有经营就像CSS做的nth-child选择。如果你在jQuery中这样做,而不是CSS设置,你可以这样做:

$('.grid tr:nth-child(odd)').addClass('alt'); 

http://jsfiddle.net/Ftk5n/2/

+0

谢谢你做到了。 – Mike

+0

CSS方法的问题在于我需要使用IE 7/8,而不支持nth-child。我喜欢修改后的jQuery第n个子方法,再次感谢。 – Mike

2
$('.grid').each(function(){ 
    $(this).find("tr:even").addClass('alt'); 
}); 

这应该做到这一点。

+0

根据记录,''$每...''是( '网格')。不必要。 ''$('。grid')。find('tr:even')。addClass('alt')''将执行''find''和''addClass''到$' .grid')''。 – BishopRook

+0

非常感谢,@BishopRook! (史诗般的用户名btw)我不知道.find –

1

试试这个

$('.grid').each(function(){ 
    $("tr:even", this).addClass('alt'); 
});