2013-08-24 8 views
5

Как присоединить все события после манипуляции с dom с помощью ответа ajax. У меня есть запрос ajax, который получает html-ответ, который в основном является фрагментом html. что фрагмент HTML имеет много кнопок. Я хочу обновить dom, так что ранее объявленные и прикрепленные события также будут применены к этому фрагменту. Я не хочу добавлять каждое событие для каждой кнопки, используя jquery on(). как еще это сделать?Присоединение событий после манипуляций с DOM с помощью JQuery ajax

+0

возможно дубликат [событие делегации Jquery] (http://stackoverflow.com/questions/14679432/jquery-event-delegation) –

+0

@EvanTrimboli - этот вопрос не является дураком этого. Решение может быть аналогичным, но вопрос не одинаков. – jfriend00

+0

Должен ли быть еще один ответ, объясняющий, как работает делегирование событий? –

ответ

9

Вы можете использовать делегированную обработку событий, которая установлена ​​заранее и может быть применена к новым добавленным элементам DOM. Делегирование обработки событий осуществляются с .on() и обычно принимает форму:

$("static parent selector").on('click', 'selector for dynamic element', fn); 

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

Вот еще один соответствующий ответ о делегированных обработки событий: Does jQuery.on() work for elements that are added after the event handler is created?

+0

Вот ссылка, объясняющая, что только сказал jfriend00: http://api.jquery.com/on/ – Jonathan