Данный вопрос никак не связан с
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 - не получается.