Как избежать многократного исполнения динамичеки подгружаемого JavaScript?
Добрый день!
Есть форма и DIV контейнер
По сабмиту формы, выполняется ajax запрос на сервер, ответ приходит в виде html и помещается в DIV контейнер
В ответе html присутствует другая форма и javascript обработчик этой формы
При сабмите новой формы почему то происходит многократное исполнение её JS обработчика
Причем кратность запуска обработчика равно количеству сабмитов первой формы.
Вопрос решается если из ответа убрать js код и поместить его в исходный код (шаблон)
Но хочется что бы подзагрузка необходимого кода происходила на лету в зависимости от исходных данных
Видимо, после сабмита первой формы вы вешаете обработчик на некий элемент Dom. При повторном сабмите первой формы, вы вешаете второй обработчик, а первый никуда не пропадает.
Попробуйте перед тем как вешать новый обработчик, удалить с элемента все предыдущие. В JQuery это off или unbind методы.
Вероятно, у вас создается несколько одинаковых обработчиков на одно событие.
Можно попробовать вешать обработчики через $(document).on('click', '#button', function(){ код });, причем убрать этот код из получаемого по ajax ответа, вынести его в общий .js.