2011-08-14 20 views
5

He intentado hacer una tabla coloreada con filas pares de un color diferente al de las impares. El único problema que tengo es que tengo que poder hacerlo incluso con filas ocultas, porque si por ejemplo oculta la fila 2, verá la fila 1 y la fila 3 del mismo color.Css coloring table problem

Esto es lo que tengo:

tr:not([display="none"]):nth-child(even){ 
    background: #EFEFFF; 
} 
tr:not([display="none"]):nth-child(odd){ 
    background: #E0E0FF; 
} 

Este código no funciona para mí ya que los navegadores no filtran: no e: nth-child de acuerdo con el orden dado. ¿Alguna sugerencia?

+1

Está tratando de usar un _element attribute selector_ para seleccionar elementos ocultos, pero 'display' es una propiedad CSS. –

+0

Aaahh, ese era el problema. Gracias a todos de cualquier manera;). Voy a probar la "solución de clase" dada. – Gonzalo

Respuesta

10

¿Es posible añadir una clase a las filas visibles por lo que podría escribir como:

tr.visible:nth-child(even) { 
    background: #EFEFFF; 
} 
tr.visible:nth-child(odd){ 
    background: #E0E0FF; 
} 

Entonces usar jQuery para añadir/quitar la clase como hacer filas visible/invisible?

+0

+1 me ganó al golpe;) –

+0

Eso es un truco muy bueno. No me di cuenta de que 'nth-child' trabajaba en el * conjunto seleccionado * - la [especificación CSS3] (http://www.w3.org/TR/css3-selectors/#nth-child-pseudo) lo hace suena como impar o incluso se calcula según el árbol. – OverZealous

+1

jaja, pensé que alguien podría llegar a esa solución. Solo quería saber si hay una solución que no parezca una solución (sin ofender). – Gonzalo

1

Terminó aquí mientras trataba de resolver un problema similar. Usó el siguiente JS para actualizar el CSS basado en una clase agregada después del filtrado.

$('tr.visible').filter(':odd').css('background-color', '#EFEFFF'); 
$('tr.visible').filter(':even').css('background-color', '#E0E0FF'); 

Nota los colores volteado debido a cero matrices indexadas.