Вход

Просмотр полной версии : Не могу сформулировать jQuery .live() для динамического DOM элемента


artnik
27.07.2011, 18:29
Есть селектбокс, дизайн которого генериться 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% рабочий пример (http://www.keenself.ru/blog/jquery/sobytiya_i_dinamicheski_dobavlennye_elementy_v_jqu ery.html)