Проблему решил еще вчера, но не было времени зайти на форум... Почему изначально сделал на списках. 1. Был простой шаблон обычного дерева на <ul><li> http://jsfiddle.net/NZaw4/1/ 2. Если делать <table>, то группировать строки можно только только через <tbody>, который НЕ поддерживает вложенность типа <tbody class="lev1"><tr>...</tr> <tr>...</tr> <tbody class="lev2"> <tr>...</tr> <tr>...</tr> </tbody> <!-- lev2 --></tbody> <!-- lev1 -->Также пробовал <tr> вкладывать в <ul><li>, бесполезно... В общем, сделал верстку с помощью таблиц. Работающий вариант http://jsfiddle.net/NZaw4/7/ Можно развернуть все узлы, а потом свернуть/развернуть 1-ю строчку. Остальные узлы сохранят свое состояние. Проверено в Опере, Мозилле, Хромом, IE9. Достоинства метода: - поскольку отсутствуют ID для <input>, то таблица легко масштабируется простым Copy-Paste Недостатки: - если таблица формируется на сервере (допустим из SQL-запроса), то алгоритм генерации HTML должен учитывать все сложности вложенной структуры <tr> - <td> - <table> - прямые линии в таблице выглядят ровно благодаря смещениям в css (раздел input:checked ~ table) Если толщина border в ячейке равна 2px, то соответственно смещение будет -2px Работает корректно, но я проверил только в 4-х браузерах...