2012-03-13 23 views
1

複数の表を含むページがあり、各行の2番目のセルに特定の背景色が付くように各表を書式設定します。 この質問の最初のバージョンへの答えで提案されているように私は、次のjQueryコードを試してみました:jQueryを使用してさまざまな表のセルを選択して統一した書式設定

$('table tr:odd td:nth-child(2)').css("background-color", "#F6F3EE"); 

これは、限りすべてのテーブルは、行の偶数を持っていると正常に動作します。そうでない場合、jQueryがsを1つの単一テーブルの一部であるとみなし、各テーブルのカウンタを再初期化しないように、書式は逆になります。ここで

は、問題を説明するためのjsフィドルへのリンクです:

http://jsfiddle.net/davidThomas/eAHUF/

答えて

3

あなたはの子孫であるだけ最初td要素を選択していますtr.reg:even行。

$('table tr:odd td:nth-child(2)').css('background-color','#ffa');​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

JS Fiddle demo

:nth-child()代替を使用してみてください。

注::CSS :nth-child()は、ゼロベースではなく(JavaScriptのように)1ベースであることを覚えておく必要があります。


の下、OPさんのコメントへの応答でを編集:

...しかし、それは問題を私に提示します。あなたのjsfiddleデモを編集して、最初のテーブルに行を追加して、不均一な行数を与えました。今度は、2番目のテーブルの行が逆に強調表示されます。これは私が探していたものではありません。これに対して修正がありますか?

ええ、私は明らかに(何とか)逃しました。私は順番に各tableを見て上記のコードを修正した後、:odd行とnth-child()を探してきました:

$('table').find('tr:odd td:nth-child(2)').css('background-color','#ffa');​ 

JS Fiddle demo

参考文献:

+0

+1あなたはそれに私を打つ! – Jasper

+0

@ David-thomasあなたの答えは最初は正しく見えましたが、それは私に問題を提示します。あなたのjsfiddleデモを編集して、最初のテーブルに行を追加して、不均一な行数を与えました。今度は、2番目のテーブルの行が逆に強調表示されます。これは私が探していたものではありません。これに対して修正がありますか? – Argoron

+0

答えを編集して修正しました。私の謝罪、なぜ私は以前の欠陥に気付かなかったのか分かりません... = –

1

はこれを試してみてください:

$('table tr.reg:even td:eq(1)').each(function(index) { 
    $(this).css("background-color", "#F4F4F8"); 
}); 
+2

なぜ '各()'を使用します。

$("table tr:even td:nth-child(2)").css("background-color", "#F4F4F8"); 

はあなたがここにアクションでそれを見ることができますか?'each()'は、 'css()'が配列から返されたすべての要素に対して作用するので、不要です。インデックスや内容に基づいて異なるアクションを実行するために要素を反復処理する必要がある場合にのみ必要です。 .. –

関連する問題