Библиотека jQuery добавление прослушивателей событий для динамически добавленных элементов [дубликат]
этот вопрос уже есть ответ здесь:
Итак, прямо сейчас я понимаю, что для того, чтобы прикрепить прослушиватель событий к динамически добавляемому элементу, вам нужно переопределить прослушиватель после добавления элемента. Есть ли способ обойти это, так вам не нужно выполнять целый дополнительный блок кода?
4 ответов:
используя
.on()вы можете определить свою функцию один раз, и она будет выполняться для любых динамически добавляемых элементов.$('#staticDiv').on('click', 'yourSelector', function() { //do something });
$(document).on('click', 'selector', handler);здесь
click- это имя события, аhandler- это обработчик событий, например ссылка на функцию или анонимную функциюfunction() {}PS: Если вы знаете конкретный узел, в который вы добавляете динамические элементы - вы можете указать его вместо
document.
вы динамически генерируете эти элементы, поэтому любой прослушиватель, примененный при загрузке страницы, не будет доступен. Я отредактировал вашу скрипку с правильным решением. В основном jQuery удерживает событие для последующей привязки, прикрепляя его к родительскому элементу и распространяя его вниз к правильному динамически созданному элементу.
$('#musics').on('change', '#want',function(e) { $(this).closest('.from-group').val(($('#want').is(':checked')) ? "yes" : "no"); var ans=$(this).val(); console.log(($('#want').is(':checked'))); });
при добавлении нового элемента с вызовами плагина jquery, вы можете сделать следующее:
$('<div>...</div>').hoverCard(function(){...}).appendTo(...)
Comments