0

大きなテーブルがあり、その<tr>要素の一部が隠されていdisplay: noneます。jquery ですべてのvisibleブロックを選択し、css スタイルを追加しようとしています。私は次のようなことを試しました:

$('#table tr').css('background-color', 'rgb(255, 255, 255)');  //give all rows white background
$('#table tr:visible').filter(':even').css('background-color', 'rgb(242, 242, 242)'); //select all even VISIBLE blocks, and add gray color to them

何らかの理由で、私の現在のコードは、目に見えないものも含め、すべての tr ブロックに色を付けています。コードを改善するにはどうすればよいですか? 間違いはどこですか?

編集:私もこのようなことを試しました:

 $('#table tr:visible').filter(':even').css('background-color', 'rgb(242, 242, 242)');
  $('#table tr:visible').filter(':odd').css('background-color', 'rgb(255, 255, 255)');

また、見えないブロックにも色がつく..

4

2 に答える 2

0

:visible に関する jquery docs によると、 width と height を持つ要素は、visible: hidden または opacity: 0 が設定されていても、可視と見なされることに注意してください。

おそらく、目に見える tr 要素にクラスを設定し (まだ設定していない場合)、代わりにそのクラスに基づいて選択する必要があります。

于 2013-06-11T05:38:21.973 に答える
0

これを試して、

// white background for odd rows
$('#table tr:odd').css('background-color', 'rgb(255, 255, 255)'); 
//select all even VISIBLE blocks, and add gray color to them
$('#table tr:visible:even').css('background-color', 'rgb(242, 242, 242)'); 

//or if you have hidden class for hidden rows then you can use like,
$('#table tr:even').not('.hiddenclass')
                   .css('background-color', 'rgb(242, 242, 242)'); 
于 2013-06-11T05:26:53.690 に答える