Thanks for your reply. Your solution works. I had a feeling that :even and :odd filters are zero-based, but found that to be "odd" in this situation. So now that I have 2 ways to stripe visible table rows using jQuery, which solution do you prefer?
$('#foobar tbody tr:visible:even').addClass('rowodd'); $('#foobar tbody tr:visible:odd').addClass('roweven'); or $('#foobar tbody tr:visible').each(function(i) { if ((i+1) % 2 === 0) { $(this).addClass('roweven'); } else { $(this).addClass('rowodd'); } }); I guess both solutions work so it really doesn't matter, but which method would you choose? The first solution contains less code but the second solution seems more intuitive. 2010/1/1 Šime Vidas <sime.vi...@gmail.com> > Also, you really don't need two counters (i and j).... > > var rows = $('#foobar tbody tr:visible'); > for (var i = 0; i < rows.length; i++){ > if ((i + 1) % 2 == 0) { > rows.eq(i).addClass('roweven'); > } > else { > rows.eq(i).addClass('rowodd'); > } > } > > However, don't use the for loop, you have jQuery's each method... > > $('#foobar tbody tr:visible').each(function(i) { > if ((i+1) % 2 === 0) { > $(this).addClass('roweven'); > } > else { > $(this).addClass('rowodd'); > } > }); >