Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не могу сформулировать jQuery .live() для динамического DOM элемента (https://javascript.ru/forum/events/19162-ne-mogu-sformulirovat-jquery-live-dlya-dinamicheskogo-dom-ehlementa.html)

artnik 27.07.2011 18:29

Не могу сформулировать jQuery .live() для динамического DOM элемента
 
Есть селектбокс, дизайн которого генериться jQuery плагином при загрузке документа (при doсReady событии). Но он, естественно, не срабатывает для динамических элементов, созданных через append().

Я пробовал юзать и live() и delegate() но ничего не выходит, live() тут врядли как-то поможет а delegate() не знает такого события, которое здесь нужно использовать. Помогите плиз

artnik 27.07.2011 18:33

Хотя, наверно разберусь. Можно при аппенде добавить событие при клике с вызовом функции вызова селектбокса

keenself.ru 26.09.2015 23:30

jQuery работает с элементами, которые были на странице на момент инициализации кода.

Если добавляются новые элементы - при помощи ajax'а или функций типа append() - то события не затрагивают их.

Как же работать с новыми созданными элементами DOM?

Оказывается для динамических элементов используется делегированная обработка событий.

Если кратко, то смысл делегирования в том, что обработчики "навешиваются" не на отсутствующие в dom элементы, а на существующий родительский объект.

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

Здесь есть 100% рабочий пример


Часовой пояс GMT +3, время: 22:28.