У меня есть таблица, отображающая древовидную структуру (Супер- и Подкатегории). Когда пользователь нажимает на суперкатегорию, свойство отображения дочерних элементов переключается.
Теперь я хочу добавить чередующийся фоновый цвет в каждую вторую строку таблицы - но, конечно, принимая во внимание только те, которые видны в данный момент. Ниже приведен упрощенный пример структуры:
<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>
Когда пользователь нажимает на элемент «Super 2», классы «hide» удаляются из дочерних элементов.
Я пробовал несколько селекторов, например ::100100
/* 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;
}
Надеюсь, я понял, что хочу делать.
Возможно ли это с помощью CSS, или я должен написать сценарий JS, который пересчитывает четные и нечетные строки всякий раз, когда что-то меняется?
Заранее благодарим за любые подсказки!