Аккордеонные меню и innerHTML - PullRequest
       19

Аккордеонные меню и innerHTML

0 голосов
/ 10 января 2012

Я использую условно-бесплатную боковую панель в стиле гармошки JS (www.dynamicdrive.com/dynamicindex1/slashdot.htm). Он прекрасно работает с HTML на основе PHP, но не работает с AJAX.

Боковая панель строится на элементах <div>, <span> и <a>. Вот часть кода JS:

for (var i = 0; i < this.submenus.length; i++)
    this.submenus[i].getElementsByTagName("span")[0].onclick = function() {
        mainInstance.toggleMenu(this.parentNode);
    };

Если я использую жестко закодированный HTML, как показано ниже (или создаю то же самое с PHP), он работает нормально:

<div id="navbar_side" class="sdmenu">
<div><span>STUDENTS</span><a>Adding Students</a><a>Deleting Students</a></div>
</div> 

Однако, если я начну с:

<div id="navbar_side" class="sdmenu"></div>

и затем используйте это:

document.getElementById("navbar_side").innerHTML="<div><span>STUDENTS</span><a>Adding Students</a><a>Deleting Students</a></div>"; 

меню не скользит. Информация все там. <a hrefs> вся работа (которую я оставил здесь). Но аккордеонное движение не ... ну ... - двигаться!

Почему это? Очевидно, что меню не читает дерево узлов, созданное AJAX, так же, как дерево, построенное PHP.

Спасибо, Ник

1 Ответ

0 голосов
/ 10 января 2012

Рекомендую начать все сначала, используя jQuery UI - Accordion . Гораздо чище и эффективнее.

...