2012-01-06 7 views
1

ページに複数の表があり、奇数行の色付けを試してみると、jQueryは、(すべての表から)TRのグループ全体を一緒にマージするようです行は奇数です。 http://jsfiddle.net/ryjennings/KNmuQ/5/複数の表の奇数行への色付け

はこれをやってからのjQueryを停止し、個別に各テーブルを治療する方法はあります:

は、例を参照してください?

+2

- CSS3 IE8で動作しませんが、これを行うことができます。 'tr:nth-​​child(odd)td'を使います。 http://caniuse.com/css-sel3 –

+0

現代のブラウザでは、純粋なCSSでこれを行うことができます:http://jsfiddle.net/mblase75/KNmuQ/22/ – Blazemonger

答えて

6

あなたは代わりにこれを行うことができます:

$(document).ready(function() { 
    $("table").find("TR:even").addClass("odd"); 
}); 

基本的には、元のセレクタは、それらのすべてをしたページ、上のtable要素内に含まれるtr要素のすべてのグループをつかんし、その後、すべてのを取りますその巨大なセットの他の1つ。新しい一連のセレクタは、まずすべてのテーブルのグループを作成し、次に各テーブル内の行のサブグループを作成し、各サブグループ内の行を1つおきに取ります。

+0

パーフェクト!これは、うまくいった! – RyJ

0

これは、あなたがそれを行うことができ一つの方法です:あなたはCSSで行うことができます何のためにJavascriptを使用してすべきではない

$("table").each(function(){ 
    $("tr:even", this).addClass("odd"); 
}); 
+0

ここで '.each()'の必要はありません。 –

+0

@MДΓΓLLLLLL...もし私がfindメソッドを使っていたのであれば、おそらくそうではなく、私が使っている構文のために必要です。私はすでにダビデの答えを否定した。これは可能な代替手段としてここにある。 –

0
$(document).ready(function() { 
    $("table").each(function(){ 
     $(this).find('TR:even').addClass("odd"); 
    }); 
}); 
+0

ここで '.each()'の必要はありません。 –

+0

うん、あなたは正しい。 –

1

。 CSSは数十倍高速です。何が必要:nth-child psudo-classです:あなたが使用しているコードとは対照的に、

tr:nth-child(odd) { background:#f5f6f8; } 

See Fiddle.

+1

記録のために、私はあなたに同意します。私の答えは、単にjQueryスニペットを修正するリクエストへの応答であり、必ずしもCSSやバニラのJavaScriptの代わりにjQueryを使うことを推奨するものではありませんでした。ただし、一部の非常に一般的なブラウザ(IE 8以降を含む)ではnth-childがサポートされていないことに注意してください。 –

+0

私たちの答え+] Modernizr](http://www.modernizr.com/)は、クロスブラウザーの理想的なソリューションです。 –

0

この1つは、親テーブルに対して行を処理します... FYIだけ

$(document).ready(function() { 
    $("tr:nth-child(even)").each(function() { 
     $(this).addClass('odd'); 
    }); 
}); 
関連する問題