Итак, у меня есть динамически сгенерированный материал HTML. Если вы нажмете кнопку, она добавит некоторый html, который имеет другую кнопку, и вы можете добавить этот другой html несколько раз, создавая несколько его копий. Это все внутри тега <form>
, поэтому мне нужно использовать e.preventDefault()
на каждой кнопке, чтобы предотвратить попытки javascript отправлять данные. Каждая кнопка также имеет свой собственный код для onclick
. Однако есть проблема с событиями кликов, добавленными javascript, на вновь созданный контент. Если у меня есть <button class="myBtn"></button>
, то в javascript у меня есть $(".myBtn").click(...)
, который будет работать нормально, но только для кнопок, которые уже существуют при запуске javascript-кода, что означает, что новые созданные кнопки не будут связаны с событием. Решение этой проблемы найдено here.Добавление к innerHTML document.body вызывает jQuery .on(), чтобы не найти его цель
Теперь мы подошли к реальной проблеме. Все работает отлично, но только до тех пор, пока я не добавлю к document.body.innerHTML
. Как только я выполняю строку document.body.innerHTML += "Text"
, код из вышеприведенной ссылки больше не выполняется при нажатии сгенерированной кнопки.
У меня есть пример здесь: https://jsfiddle.net/6hvgatLy/1/
Я никогда не знал, что переписывание innerHTML удаляет все обработчики событий ! Это имеет смысл, хотя. Большое спасибо! – Howzieky
Я бы рекомендовал изменить вашу делегацию событий, как было предложено, чтобы избежать подобных проблем в будущем. – Jeff