2010-10-29 21 views
33

To powinno być łatwe. Mam zmienną, którą już zadeklarowałem, nazywającą się $ listItems. Deklaracja wygląda następująco:jQuery: Biorąc pod uwagę selektor, znajdź tylko jego widoczne elementy.

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

Później w moim kodzie chciałbym uzyskać tylko te, które są obecnie widoczne. Jak bym to zrobił? Coś jak:

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

Dzięki.

Odpowiedz

70

Można użyć .filter() zawęzić zbiór elementów tylko do tych, które pasują do selektora (lub funkcji), podobnie jak to:

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

Tak, to właśnie miałem na myśli Nick;) – fehays

+0

jest to szczególnie przydatne, jeśli musisz filtrować wiele wartości. Na przykład. wybrane i widoczne. +1 za dobre rozwiązanie! –

+0

FWIW, jQuery definiuje element jako widoczny "jeśli zajmują miejsce w dokumencie". Element może mieć "widoczność" ustawiony na 'ukryty', więc nie jest faktycznie widoczny na stronie, ale': visible' nadal zwróci element. – jacroe

4

Trzeba to z selektora :visible. Może być stosowany w dowolnej z metod zbierania jQuery $(), filter(), children(), find() itd

Uwaga: Istnieje różnica między czymś, co jest widoczny na stronie i ma swój zestaw visibility nieruchomości.

Powiązane problemy