2010-10-29 18 views
33

Esto debería ser fácil. Tengo una variable que ya he declarado llamada $ listItems. La declaración se ve así:jQuery: dado un selector, encuentre solo sus elementos visibles

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

Más adelante en mi código, me gustaría obtener solo los que están actualmente visibles. ¿Cómo voy a hacer eso? Algo como:

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

Gracias.

Respuesta

70

Puede utilizar .filter() para reducir un conjunto de elementos que sólo aquellos que coincidan con un selector (o una función), así:

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

Sí, eso es lo que quise decir Nick;) – fehays

+0

Esto es especialmente útil si necesita filtrar en varios valores. P.ej. seleccionado y visible. +1 para una buena solución! –

+0

FWIW, jQuery define un elemento como visible "si consumen espacio en el documento". Un elemento podría tener su 'visibilidad' establecida en' oculto', por lo que no se ve realmente en la página, pero ': visible' todavía devolvería el elemento. – jacroe

4

lo tiene con el selector :visible. Puede ser utilizado en cualquiera de los métodos de recolección de jQuery, $()filter(), children(), find(), etc.

Nota: Hay una diferencia entre algo que es visible en la página y tiene su conjunto visibility propiedad.

Cuestiones relacionadas