Tengo una tabla que muestra una estructura de árbol (Super- y Subcategorías). Cuando el usuario hace clic en una supercategoría, la propiedad de visualización de los elementos secundarios se alinea.Selección de cada segunda fila de la tabla visible
Ahora quiero agregar un color de fondo alterno en cada segunda fila de la tabla, pero por supuesto solo teniendo en cuenta aquellos que están actualmente visibles. A continuación se muestra un ejemplo simplificado de la estructura:
<table>
<tr data-level="0"><td>Super 1</td></tr>
<tr class="hide" data-level="1"><td>Sub 1</td></tr>
<tr data-level="0"><td>Super 2</td></tr>
<tr class="hide" data-level="1"><td>Sub 2</td></tr>
<tr class="hide" data-level="1"><td>Sub 3</td></tr>
<tr class="hide" data-level="1"><td>Sub 4</td></tr>
</table>
Cuando el usuario hace clic en el elemento de "Super 2", las clases "ocultar" se eliminan de los elementos secundarios.
He probado varios selectores, ej .:
/* Ugly result (dosn't recognize that elements are hidden) */
tr:nth-child(2n)
{
background-color: grey;
}
/* Doesn't work at all */
tr:visible:nth-child(2n)
{
background-color: grey;
}
/* Not what I inteded to do */
tr:not(.hide):nth-child(2n)
{
background-color: grey;
}
espero Tengo claro en lo que quiero hacer.
¿Es posible con CSS o debería escribir un script JS que recalcula las filas pares e impares cada vez que algo cambia? ¡Gracias de antemano por cualquier pista!
Esto se pregunta mucho - la respuesta típica es que no es posible con CSS puro (hasta CSS4 tal vez), por lo que tendrás que hacer todo esto en JS. De hecho, el selector ': visible' es realmente un selector no estándar que aparece en jQuery/Sizzle y tal vez en un par de otras bibliotecas. – BoltClock
posible duplicado de [Estilo usando nth-child para mantener actualizado el aspecto de la tabla (alternando colores de filas)] (http://stackoverflow.com/questions/9216398/style-using-nth-child-to-keep-tables-aspect- alternating-row-colors-updated) – BoltClock