Ho una tabella che mostra una struttura ad albero (Super e Sottocategorie). Quando l'utente fa clic su una supercategoria, la proprietà display dei child viene alternata.Selezione di una riga della tabella visibile ogni secondo
Ora voglio aggiungere un colore di sfondo alternato su ogni seconda fila di tabelle, ma ovviamente tenendo conto solo di quelle che sono attualmente visibili. Ecco un esempio semplificato di struttura:
<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>
Quando l'utente clicca l'elemento "Super 2", le classi "nascondere" vengono rimossi dagli elementi secondari.
Ho provato diversi selettori, ad es .:
/* 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;
}
spero mi sono chiare su quello che voglio fare.
È possibile con i CSS o dovrei scrivere uno script JS che ricalchi le righe pari e dispari ogni volta che qualcosa cambia? Grazie in anticipo per eventuali suggerimenti!
Questo viene chiesto molto - la risposta tipica è che non è possibile con CSS puro (fino a quando non CSS4 forse), quindi nel frattempo avrete bisogno di fare tutto questo in JS. In effetti, il selettore ': visible' è in realtà un selettore non standard che appare in jQuery/Sizzle e forse un paio di altre librerie. – BoltClock
possibile duplicato di [Stile utilizzando nth-child per mantenere l'aspetto della tabella (alternando i colori delle righe) aggiornato] (http://stackoverflow.com/questions/9216398/style-using-nth-child-to-keep-tables-aspect- alternating-row-colors-updated) – BoltClock