2010-04-05 9 views
6

A partir de una lista simple:¿Cómo cuento los elementos de la lista que no están ocultos?

<ul> 
    <li>Item 1</li> 
    <li style="display: none;">Item 2</li> 
    <li>Item 3</li> 
</ul> 

Sé que puedo restar los elementos ocultos de la lista total

$('ul li').size() - $('ul li:hidden').size() 

Pero pensé que podría ser una manera más elegante para lograr esto con jQuery :

$('ul li:hidden:not').size() 

Eso no funciona. ¿Algunas ideas?

Respuesta

22

Lo contrario de :hidden es :visible - jQuery docs.

$('ul li:visible').size() 
+0

Oh, Dios mío, gracias. Ahora me siento tonto. Fue muy difícil decir mi búsqueda de Google para encontrar eso, supongo. – Baloneysammitch

+0

Si comienza en la página: oculta de los documentos (http://api.jquery.com/hidden-selector/) y hace clic en "Filtro de visibilidad" en las categorías en la parte superior derecha, lo encontrará. Los documentos jQuery son muy buenos. –

+0

debería usar '.length' en lugar de' .size() '. 'size()' tiene la sobrecarga de una llamada de función donde '.length' no – zgr024

2

La forma más simple es:

var hidden = $("ul > li:hidden").length; 

En una nota lateral, para utilizar correctamente :not():

var hidden = $("ul > li:not(:visible)").length; 

Por último un objeto jQuery soporta el método size() y la propiedad length, que son intercambiables

+0

Gracias por la ayuda con: not() No sabía que podía poner ese tipo de condiciones dentro de las comillas. – Baloneysammitch

Cuestiones relacionadas