Хорошо, у меня есть набор флажков для выбора критериев. Ради аргумента скажем, что данные выглядят так:
[] Vehicles
[] Unpowered
[] Bicycle
[] Skateboard
[] Powered
[] Two-wheeled
[] Motorcycle
[] Scooter
[] Four-wheeled
etc
[] s представляют флажки.
Игнорируя явно надуманную природу этого примера, идея такова:
- Для начала виден только флажок Автомобиль;
- Если пользователь нажимает на флажок «Транспортное средство», происходит переход на следующий уровень («Питание», «Без питания»);
- Если пользователь выбирает Powered, он открывает следующий уровень (Двухколесный, Четырехколесный);
- Если пользователь снимает флажок с Powered, этот уровень исчезает.
Теперь это относительно легко настроить, если onclick переключает атрибут CSS отображения между блоком и ни одним.
Это в настоящее время структурировано на странице как:
<table>
<tr>
<td><input type="checkbox" onclick="toggle('__Vehicles');"></td>
<td>Vehicles
<table id="__Vehicles">
<tr>
<td><input type="checkbox"></td>
<td>Unpowered
etc
Я должен указать, прежде чем кто-то спросит: причина, по которой флажок был установлен в ячейке таблицы, заключалась в управлении форматированием. Это облегчало эффективный отступ, так как все в следующей ячейке таблицы будет выстраиваться.
Все это прекрасно работает, но вложение таблиц становится довольно глубоким. Я продолжаю думать, что должен быть лучший способ, чем этот. Он должен иметь возможность легко создаваться динамически и иметь хорошую межбраузерную поддержку для форматирования «дерева».
Я должен также упомянуть, что jQuery доступен. Я использую это для других вещей.
Предложения
Редактировать: Да, стилизация флажка важна, как отмечено в нескольких комментариях. Кроме того, я опубликовал решение этой проблемы на основе полученных ответов в качестве ответа ниже (слишком большой, чтобы добавить его сюда), просто для тех, кому интересно посмотреть пример.