Как присоединить все события после манипуляции с dom с помощью ответа ajax. У меня есть запрос ajax, который получает html-ответ, который в основном является фрагментом html. что фрагмент HTML имеет много кнопок. Я хочу обновить dom, так что ранее объявленные и прикрепленные события также будут применены к этому фрагменту. Я не хочу добавлять каждое событие для каждой кнопки, используя jquery on(). как еще это сделать?Присоединение событий после манипуляций с DOM с помощью JQuery ajax
ответ
Вы можете использовать делегированную обработку событий, которая установлена заранее и может быть применена к новым добавленным элементам 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?
Вот ссылка, объясняющая, что только сказал jfriend00: http://api.jquery.com/on/ – Jonathan
возможно дубликат [событие делегации Jquery] (http://stackoverflow.com/questions/14679432/jquery-event-delegation) –
@EvanTrimboli - этот вопрос не является дураком этого. Решение может быть аналогичным, но вопрос не одинаков. – jfriend00
Должен ли быть еще один ответ, объясняющий, как работает делегирование событий? –