переинициализировать события dom после вызовов ajax - PullRequest
1 голос
/ 17 ноября 2009

У меня есть следующая проблема / сомнение, с которым, я надеюсь, кто-нибудь сможет мне помочь. Допустим, у меня есть несколько событий javascript, которые инициализируются при загрузке страницы. На этой странице я разрешаю Пользователю нажимать несколько кнопок действий (которые имеют эти события). Теперь, одна из этих кнопок делает в этом случае ajax-вызов, при успешном результате которого эта кнопка исчезнет и появится другая кнопка (я вставил этот html из ответа ajax). В этот момент я хочу добавить событие и к этой новой кнопке, поэтому после ввода HTML я делаю это. Когда я нажимаю на эту кнопку, я хочу, чтобы первая кнопка появилась снова, а эта - исчезнуть. Теперь эта новая кнопка (та, которая была там в начале) должна снова иметь то же самое событие! Нужно ли снова инициализировать это событие? Разве нет способа сделать это как-то автоматически? Я имею в виду, если у меня есть несколько событий для всех из определенного div, и я загружаю ajax другое в этом div, разве это не должно немедленно реагировать на те же события? Спасибо

Ответы [ 2 ]

1 голос
/ 17 ноября 2009

Если вы просто скроете исходную кнопку (например, display:none), то все события, которые вы прикрепили к ней в начале, все равно будут там.

Новые кнопки, которые вы создаете после начальной загрузки страницы (например, добавляя их из запроса Ajax), будут нуждаться в прикреплении событий к ним, когда они находятся в безопасности в DOM.

В jQuery есть функция для автоматического выполнения этой операции, которая называется live . Это позволяет вам указать селектор, и он будет постоянно отслеживаться. Как только в DOM появятся новые объекты, соответствующие исходному селектору, к нему также будут присоединены события.

Документацию для Live можно посмотреть здесь: http://docs.jquery.com/Events/live

1 голос
/ 17 ноября 2009

jQuery имеет функцию регистрации событий в реальном времени, которая будет сохранять события правильными для всех текущих и будущих совпадений для селектора. ( jQuery.com )

Что касается обычного Javascript, да, вам нужно снова зарегистрировать событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...