i want to dynamically add a class to all rows of a table except the first and last row. how would i do this without assigning a css class to the rows to identify them. I a
Drop the gt()
, as I'd assume it's a tiny bit slower than :first
.
Use not()
in conjunction with :first
and :last
:
$('table#tbl > tbody > tr').not(':first').not(':last').addClass('highlight');
Most browsers automatically add an I am not 100% sure this is the way all browsers do it, so it would be safer to just add the Hope this solves your problem!tbody
element in the table markup if that's missing, that is why the immediate children selector was failing – there were no elements as an immediate children to the tag.
manually. Otherwise you need a little sniffing and cannot do it as an one liner:
if($('table#tbl > tbody').size() > 0) {
$('table#tbl > tbody > tr').not(':first').not(':last').addClass('highlight');
} else {
$('table#tbl > tr').not(':first').not(':last').addClass('highlight');
}