2011-06-01 13 views
5

tengo este código que hace filas alternas para un HTML en jQuery:¿Cómo puedo alternar filas "visibles" en una tabla HTML usando jQuery

function AlternateRowColors() { 

    $("table.altRow1 tr").filter(function() { 
    return true; 
    }).filter(':even').addClass('alt'​​​​​​); 

    $("tr.alt td[rowspan]").each(function() { 
    $(this).parent().nextAll().slice(0, this.rowSpan - 1).addClass('alt'); 
    }); 

    $('ins').css("background-color", "#cfc") 
} 

Esto funciona muy bien (no dude en añadir sugerencias si algo es ineficiente arriba)

el problema que tengo ahora es que tengo un código que oculta un montón de filas (detalles sobre por qué no son realmente relevantes para esta pregunta), el punto principal es que quiero tener una función que pueda hacer fila de colores alternativos a las filas visibles actuales.

oculto las filas simplemente agregando una clase a ciertas filas y las llaman a .hide() en esa clase.

hay alguna sugerencia para obtener colores de fila alternativos (como el código anterior) pero que funcione en las filas visibles, así que no importa lo que esté oculto, la tabla siempre se ve correcta en términos de coloración de fila alterna.

+0

¿Por qué estás filteri ng con una función que simplemente devuelve verdadero? – Andre

+0

@Andre: ¿puedes aclarar el problema? – leora

+0

estás usando filter() pasando una función que simplemente devuelve verdadero. Entonces no estás filtrando nada. – Andre

Respuesta

8

terminé usando esto lo que parecía funcionar:

function UpdateTable() { 
$('table.altRow1 tr:visible').removeClass('odd').filter(':odd').addClass('odd'); 

con este CSS:

.altRow1 tr { 
    background-color: #FFFFFF; 
} 
.altRow1 tr.odd { 
    background-color: #DEDEDE; 
} 
1

Sugiero que agregue una clase a las filas visibles también en el código que tiene que agregar la clase a filas ocultas. Supongamos que agrega la clase llamada visible. A continuación, puede aplicar su código de filas alternativas arriba a la clase visible:

$("table.altRow1 tr.visible").filter(function() { 

y así sucesivamente.

1

Es posible que desee volver a llamar a esta función cuando esté ocultando filas, de modo que pueda volver a calcular las filas pares e impares. Puede utilizar la no-selector en sus filastabla para obtener sólo las filas visibles, como esto:

$('table.altRow1 tr:not(.hidden)') 
-1

cadena de la selección:

$('table tr:visible:even').addClass('alt'); 
Cuestiones relacionadas