I have a jQuery selector like the following:
$('.someClass div div .specificChildClass:nth-child(even)').addClass('alternateLine');
This stripes just as I want it to UNLESS there's a hidden element. I need the selector to take hidden elements into account and NOT factor them in to the striping. This way, the visible elements are striped properly on the page.
I tried changing my selector to this:
$('.someClass div div .specificChildClass:visible:nth-ch开发者_运维百科ild(even)').addClass('alternateLine');
and then:
$('.someClass div div .specificChildClass:not(.hiddenClass):nth-child(even)').addClass('alternateLine');
Is there an easy solution to this? I know I can iterate through a .each loop with an iterator and check each, mod the iterator to decide odd or even, but I thought there was probably a better way.
Try :even
-
$('.someClass div div .specificChildClass:visible:even')
.addClass('alternateLine');
nth-child
refers to DOM structure, this isn't what you're looking for.
Try something like this:
$('.someClass div div .specificChildClass:visible:nth-child(even)')
.filter(function(i) {
$(this).is(':visible').addClass('alternateLine');
});
Hope that helps.
use :not(:hidden)
$('.someClass div div .specificChildClass:not(:hidden):even').addClass('alternateLine');
精彩评论