2010-10-29 6 views
33

Dies sollte ein einfacher sein. Ich habe eine Variable, die ich bereits mit $ listItems deklariert habe. Die Deklaration sieht wie folgt aus:jQuery: Bei einem Selektor finden Sie nur seine sichtbaren Elemente

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

Später in meinem Code, würde Ich mag nur diejenigen bekommen, die derzeit sichtbar sind. Wie würde ich darüber gehen? Etwas wie:

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

Danke.

Antwort

70

können Sie .filter() verwenden, um eine Reihe von Elementen zu verengen denen nur die eine Wahlschalter (oder eine Funktion) entsprechen, wie folgt aus:

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

Ja das ist, was ich meinte Nick;) – fehays

+0

Dies ist besonders hilfreich, wenn Sie mehrere Werte filtern müssen. Z.B. ausgewählt und sichtbar. +1 für eine gute Lösung! –

+0

FWIW, jQuery definiert ein Element als sichtbar, "wenn es Speicherplatz im Dokument verbraucht". Für ein Element kann seine Sichtbarkeit auf "versteckt" gesetzt werden, so dass es auf der Seite nicht wirklich angezeigt wird, aber ": visible" würde das Element trotzdem zurückgeben. – jacroe

4

Sie haben es mit dem :visible Selektor. Es gibt einen Unterschied zwischen etwas, das sichtbar auf der Seite und hat seine visibility Eigenschaft festgelegt: Es kann $(), filter(), children(), find() usw.

Hinweis in einem der jQuery Erhebungsmethoden verwendet werden.