0

我有一张大桌子,它的一些<tr>元素是隐藏的display: none。我正在尝试visible使用 jquery 选择所有块,并向它们添加 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

试试这个,

// 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 回答
0

请注意,根据:visible 上的 jquery 文档,任何具有宽度和高度的元素都被认为是可见的,即使它具有 visibility: hidden 或 opacity: 0 集。

您可能应该在可见的 tr 元素上设置一个类(如果您还没有)并基于该类进行选择,例如“#table .visible:even”

于 2013-06-11T05:38:21.973 回答