2010-05-28 13 views
49

Tengo este código HTML:jquery selector para contar el número de filas de la tabla visible?

<table> 
    <tr style="display:table-row"><td>blah</td></tr> 
    <tr style="display:none"><td>blah</td></tr> 
    <tr style="display:none"><td>blah</td></tr> 
    <tr style="display:table-row"><td>blah</td></tr> 
    <tr style="display:table-row"><td>blah</td></tr> 
</table> 

tengo que contar el número de filas que hacer no tienen display:none. ¿Cómo puedo hacer eso?

Respuesta

118

Puede utilizar el :visible selector y .length así:

var numOfVisibleRows = $('tr:visible').length; 

Si el <table> sí mismo no es visible en la pantalla (:visible devuelve false si cualquier padre está oculto, el elemento no tiene por qué ser escondido directamente), a continuación, utilizar .filter(), así:

var numOfVisibleRows = $('tr').filter(function() { 
    return $(this).css('display') !== 'none'; 
}).length; 
+2

Y si solo desea que el recuento incluya filas visibles en el cuerpo de la tabla, utilice $ ('tr: visible'). Length - $ ('thead> tr'). –

11

$('tr:visible').length

+0

gracias hombre! trabajé –

3

$ ("TR: visibles") que obtiene los resultados de las filas visibles, y creo que puede hacer entonces .length

+3

No estoy seguro de por qué esto se subevaporó, '.is (": visible ")' devuelve ** booleano **, no se puede llamar a '.length', en lugar de' .is() 'se necesita'. filter() '. –

+0

Gracias, escribió una declaración incorrecta ... –

5

También puede ver en particular la tabla filas visibles

var totalRow = $('#tableID tr:visible').length; 
var totalRowWithoutHeader = totalRow-1; 

El totalRowWithoutHeader da el recuento total de filas excluyendo la fila del encabezado.

+2

Mejor no codificar el número de filas de encabezado y usar $ ('thead> tr'). Length en su lugar. –

Cuestiones relacionadas