проблема с прототипом hasclassname - PullRequest
0 голосов
/ 06 января 2012

У меня есть список уль:на следующую ссылку его вступает в силу.Как это решить?

Ответы [ 2 ]

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

Причина, по которой он не работает до тех пор, пока вы не нажмете первый элемент, заключается в том, что функция oncom содержит наблюдение для элементов li, и вы не запускаете этот код, пока не нажмете один из них.Вы должны избавиться от материала onClick в HTML, если это возможно.Просто запустите этот код при загрузке страницы, и он сразу же увидит li:

$$('#menubar li').invoke('observe', 'click', (function(e) {
    //Removes current class from all the li's
    $$('#menubar li').invoke('removeClassName', 'current');
    //Add current class to the li clicked on
    Event.element(e).addClassName('current');
    //Does whatever this does, without being in the onClick
    new Ajax.Updater('container','schedule.php',{
        evalScripts:true
    });
}).bindAsEventListener(this));
0 голосов
/ 06 января 2012

Опции, которые вы передаете в программу обновления: {evalScripts:true,onComplete:oncom(this)}.Вы не назначаете функцию oncom на onComplete, а сразу же вызываете oncom(this), а затем присваиваете ее результат onComplete - и результат равен нулю.

Если container содержит список меню, тоон также будет заменен (возможно, поэтому вы воссоздаете обработчики кликов).Попробуйте использовать Event.on один раз, чтобы вновь вставленные элементы вели себя правильно.

Event.on('container', 'click', '#menubar li', function(event, element) {
    // manipulate class names here
});

Также учтите, что, если все, что вы делаете, это манипулирование именами классов, вы можете сделать это на сервере, когдаИспользуется AJAX, что позволит избежать проблем в гонке.

...