2011-08-19 54 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'); 
});