2010-10-29 7 views
33

Cela devrait être facile. J'ai une variable que j'ai déjà déclarée appelée $ listItems. La déclaration ressemble à ceci:jQuery: Étant donné un sélecteur, trouver uniquement ses éléments visibles

var $listItems = $ul.children('li'); // $ul is just a selected unordered list 

Plus tard dans mon code, je voudrais seulement obtenir ceux qui sont actuellement visibles. Comment pourrais-je m'y prendre? Quelque chose comme:

$listItems.parent().children(':visible')? 

Merci.

Répondre

70

Vous pouvez utiliser .filter() pour affiner un ensemble d'éléments seulement ceux qui correspondent à un sélecteur (ou une fonction), comme ceci:

$listItems.filter(':visible') 
+0

Ouais c'est ce que je voulais dire Nick;) – fehays

+0

cela est particulièrement utile si vous avez besoin de filtrer sur plusieurs valeurs. Par exemple. sélectionné et visible. +1 pour une bonne solution! –

+0

FWIW, jQuery définit un élément comme visible "s'ils consomment de l'espace dans le document". Un élément pourrait avoir sa 'visibility' définie à 'hidden', donc ce n'est pas réellement vu sur la page, mais': visible' retournerait toujours l'élément. – jacroe

4

Vous l'avez avec le sélecteur :visible. Il peut être utilisé dans l'une des méthodes de collecte jQuery $(), filter(), children(), find(), etc.

Note: Il y a une différence entre quelque chose qui est sur la page visible et a son ensemble de propriétés visibility.

Questions connexes