开发者

jQuery Striping with Some Elements Hidden

开发者 https://www.devze.com 2022-12-11 02:53 出处:网络
I have a jQuery selector like the following: $(\'.someClass div div .specificChildClass:nth-child(even)\').addClass(\'alternateLine\');

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');
0

精彩评论

暂无评论...
验证码 换一张
取 消