#javascript #ajax #events #prototypejs #dom-events
#javascript #ajax #Мероприятия #prototypejs #dom-события
Вопрос:
У меня есть form_element, я хочу изменить стиль при его публикации.
Я изменил уже работающий код следующим образом:
form_element.observe("ajax:before", function(){ /*do stuff*/ });
к этому:
form_element.observe("ajax:before", changeFormToPostingStyle(form_element));
По какой-то причине второй элемент запускается немедленно при загрузке страницы — и это независимо от события. Я попытался изменить событие ajax: complete / success / что угодно, но оно по-прежнему запускается преждевременно. Есть идеи?
Ответ №1:
Это срабатывает во время выполнения инструкции, потому что
changeFormToPostingStyle(form_element)
это вызов функции, и observe ожидает, что это будет функция или вызов функции, которая возвращает функцию. Измените его на
form_element.observe("ajax:before", function() { changeFormToPostingStyle(this) });
или
form_element.observe("ajax:before", changeFormToPostingStyle);
и использовать this
в этой функции
Комментарии:
1. Это не «Наблюдатель», а
Element.observe
. Однако вы правы в том, что функция должна передаваться как объект.2. Спасибо за редактирование. Теперь похоже, что мой комментарий говорит о чем-то, чего вы не делали!
3. Спасибо за ответ! Итак, если я хочу очистить observer, могу ли я просто сделать: form_element.stopObserving(«ajax:before», changeFormToPostingStyle); ?