Задать вопрос
@stfed84

Как избежать многократного исполнения динамичеки подгружаемого JavaScript?

Добрый день!

Есть форма и DIV контейнер
По сабмиту формы, выполняется ajax запрос на сервер, ответ приходит в виде html и помещается в DIV контейнер
В ответе html присутствует другая форма и javascript обработчик этой формы
При сабмите новой формы почему то происходит многократное исполнение её JS обработчика
Причем кратность запуска обработчика равно количеству сабмитов первой формы.

Вопрос решается если из ответа убрать js код и поместить его в исходный код (шаблон)

Но хочется что бы подзагрузка необходимого кода происходила на лету в зависимости от исходных данных
  • Вопрос задан
  • 228 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@TheBububo
Видимо, после сабмита первой формы вы вешаете обработчик на некий элемент Dom. При повторном сабмите первой формы, вы вешаете второй обработчик, а первый никуда не пропадает.
Попробуйте перед тем как вешать новый обработчик, удалить с элемента все предыдущие. В JQuery это off или unbind методы.
Ответ написан
Комментировать
puchkovk
@puchkovk
Усложнять — просто. Упрощать — сложно.
Вероятно, у вас создается несколько одинаковых обработчиков на одно событие.
Можно попробовать вешать обработчики через $(document).on('click', '#button', function(){ код });, причем убрать этот код из получаемого по ajax ответа, вынести его в общий .js.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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