У меня есть таблица, отображающая древовидную структуру (супер- и подкатегории). Когда пользователь нажимает на суперкатегорию, свойство отображения дочерних элементов отправляется.Выбор каждой второй строки видимой таблицы
Теперь я хочу добавить чередующийся цвет фона для каждой второй строки таблицы, но, конечно, учитывать только те, которые в настоящее время видны. Ниже приведен упрощенный пример структуры:
<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>
Когда пользователь нажимает на элемент «Супер 2», классы «скрыть», удаляются из дочерних элементов.
Я попробовал несколько селекторов и т.д .:
/* 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, который перепрограммирует четные и нечетные строки всякий раз, когда что-либо изменяется? Заранее благодарим за любые подсказки!
Это очень часто задается вопросом - типичный ответ заключается в том, что это невозможно с чистым CSS (до тех пор, пока не будет возможно CSS4), поэтому в то же время вам нужно будет все это сделать в JS. Фактически, селектор ': visible' действительно является нестандартным селектором, который появляется в jQuery/Sizzle и, возможно, в нескольких других библиотеках. – BoltClock
Возможный дубликат [Стиль, использующий nth-child, чтобы сохранить аспект таблицы (цвета чередующихся строк) обновлен] (http://stackoverflow.com/questions/9216398/style-using-nth-child-to-keep-tables-aspect- переменная-строка-цвета обновлена) – BoltClock