2009-11-05 5 views
1

J'ai un sélecteur jQuery comme ce qui suit:jQuery Striping avec certains éléments cachés

$('.someClass div div .specificChildClass:nth-child(even)').addClass('alternateLine'); 

Ce rayures tout comme je le veux à moins qu'il y ait élément caché. J'ai besoin du sélecteur pour prendre en compte les éléments cachés et ne pas les factoriser dans le striping. De cette façon, les éléments visibles sont rayés correctement sur la page.

J'ai essayé de changer mon sélecteur à ceci:

$('.someClass div div .specificChildClass:visible:nth-child(even)').addClass('alternateLine'); 

puis:

$('.someClass div div .specificChildClass:not(.hiddenClass):nth-child(even)').addClass('alternateLine'); 

est-il une solution facile à cela? Je sais que je peux itérer à travers une boucle .each avec un itérateur et vérifier chacun, mod l'itérateur pour décider impair ou même, mais je pensais qu'il y avait probablement un meilleur moyen.

+1

quel est le problème avec: visible? il devrait faire ce dont vous avez besoin. – Sinan

+0

Oui, mais c'était l'appel nth-child qui causait le problème. – DougJones

Répondre

1

Essayez :even -

$('.someClass div div .specificChildClass:visible:even') 
    .addClass('alternateLine'); 

nth-child fait référence à la structure DOM, ce n'est pas ce que vous cherchez.

+0

Exactement ce que je cherchais. J'ai supposé que nth-child utilisait la structure DOM après avoir vu les résultats, mais je ne savais pas comment résoudre ce problème. Merci! – DougJones

0

Essayez quelque chose comme ceci:

$('.someClass div div .specificChildClass:visible:nth-child(even)') 
    .filter(function(i) { 
      $(this).is(':visible').addClass('alternateLine'); 
    }); 

espoir qui aide.

0

utilisation :not(:hidden)

$('.someClass div div .specificChildClass:not(:hidden):even').addClass('alternateLine'); 
Questions connexes