2013-02-06 39 views
2

我有一個隱藏了一些行的表。我確實展示了他們,但需求。用戶必須執行操作才能顯示這些行。每個隱藏的行都有帶TR標籤的class =「hideMe」。具有例外的備用行顏色

我想添加一個類交替行,以改變顏色,但只有那些總是可見的。通常很簡單,但我不確定如何合併隱藏的行異常。

$('.myTable tr:odd:not(hideMe)').addClass('altRow'); 

只能用CSS來完成,還是需要拋出一些jQuery魔法?

+0

因此,當顯示「隱藏」行,你不希望他們有條紋? – thatidiotguy

回答

1

其實,只需要調整 「一點點」 你的代碼,你會得到一個很好的解決方案:

$('.myTable tr:not(.hideMe):odd').addClass('altRow'); 

看到它在這裏工作:http://jsfiddle.net/HYHWJ/

另一個解決方案是:

$('.myTable tr:not(.hideMe)') 
    .removeClass('altRow') 
    .filter(':odd') 
    .addClass('altRow'); 

看到這裏工作在這裏:http://jsfiddle.net/r4N5g/

3

你必須訴諸於JavaScript的:

$('.myTable tr:not(.hideMe)').each(function (i) { 
    $(this).toggleClass('altRow', !! (i % 2)); 
}); 

這裏的小提琴:http://jsfiddle.net/PxT93/


對於a tiny increase in performance,你可以使用,而不是模的&逐位運算符:

$('.myTable tr:not(.hideMe)').each(function (i) { 
    $(this).toggleClass('altRow', !! (i & 1)); 
}); 

這是小提琴:http://jsfiddle.net/PxT93/1/

+0

在那裏拋出一個else removeClass來刪除先前是'altRow'但由於新顯示的行而不再是這樣的行。 :-) –

+0

@MichaelMarr - 我假設OP知道如何做到這一點,但我將它添加到我的答案中。對你而言:) –

+0

看,現在這個答案不是更加優雅嗎? :-) –