@atachrus

Не срабатывает событие у плагина при добавлении элемента после загрузки страницы?

Данный вопрос никак не связан с Bootstrap TouchSpin, но пример сделан на нём, я думаю такая же ситуация будет и с другим плагином.

Суть вопроса:
Имеется страница с элементами (в нашем случае это спиннер Bootstrap TouchSpin), часть с них имеется в кода при загрузке странице, а часть в зависимости от контента по ajax подгружается. Ситуация в том, что события на изменения (любые события) не реагирует на элементы добавленные после загрузки страницы.
Приближенный пример (рабочий пример: https://jsfiddle.net/atach/s210gr6y/18/):
// Инициализирутся элементы которые на странице
initSpinner();

setTimeout(function() {
	// При какиих то условиях подгружаются и иногда добавляются еще
	$(".newSpinner").html('<hr/><input class="spinner" value="1" readonly /><br/>');
       // Повторно инициализирую спиннер
      initSpinner();
}, 500);

$(".spinner").on("touchspin.on.stopspin", function(target) {
	alert("On change")
});

function initSpinner() {
	$("input.spinner").trigger('touchspin.destroy');
	$("input.spinner").TouchSpin();
}
При таком коде, на новые элементы событие Change не попадает

Если я повторно прослушиваю события, то тогда для уже ранее инициализированных оно срабатывают несколько раз (Рабочий пример: https://jsfiddle.net/atach/s210gr6y/19/)
$(".spinner").on("touchspin.on.stopspin", function(target) {
    alert("On change")
  });


Подскажите как правильно быть, можно ли как то сбросить ранее вызванное событие, что бы оно не прослушивалось.
Пробовал и через .one, и через .off - не получается.
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
DeLaVega
@DeLaVega
Верстаю, фронтэндю =)
$("body").on("touchspin.on.stopspin", ".spinner", function(target) {
    alert("On change")
  });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы