Помогите разобраться с траверсингом.
Есть такой элемент интерфейса, как раскрывающееся дерево чекбоксов.
Логика поведения следующая - если меняем атрибут чекбокса ("checked") - то все его потомки тоже приобретают (или соответственно теряют) этот атрибут. Тут всё просто, и нормально работает.
Но есть одна заковыка - если на каком-то уровне потомков, один из "соседей" отличается от других (чекнут) - то все его предки затеняются (дескать не все потомки отмечены). Я там все равно картинку подсовываю (нестандартные чекбоксы), но это не суть - можно навешивать атрибут "disabled". И вот эта схема у меня работает очень коряво - никак не получается корректно обшарить дерево.
Плюс ещё момент - из элементов рядом со всеми отмеченными чекбоксами, надо взять текст и поместить его в другой блок. Это тоже просто, но снова заковыка - зачем брать всех, получится повторение. Так что берём только родителей, у которых отмечены все потомки, либо (если потомков нет), то сам элемент.
На словах, наверное не понятно - сейчас пример набросаю...
|