У меня проблема с .on()
. У меня есть несколько элементов формы (формы с class="remember"
), также я добавляю еще один form.remember
с помощью AJAX. Итак, я хочу, чтобы он обрабатывал событие отправки примерно так:
$('form.remember').on('submit',function(){...})
но форма, добавленная с помощью AJAX, с ним не работает.
В чем проблема? Это ошибка?
$(document).on('submit','form.remember',function(){...})
document
ближайшим статическим родителем.Ответы:
Вам нужно делегировать событие на уровень документа
$('form.remember').on('submit'
работать так же, как и$('form.remember').submit(
при использовании,$(document).on('submit','form.remember'
тогда он также будет работать для DOM, добавленного позже.источник
$(document).on
имеет гораздо более низкую производительность, чем$('form.remember').on('submit'
. Теперь он должен прослушивать все события отправки в документе. Гораздо лучше немного сузить кругозор, чем слушатьon
document
, если возможно,У меня была проблема с теми же символами. В моем случае оказалось, что в моей функции отправки отсутствует оператор return.
Например:
источник
return false;
форма не будет отправлена. Для отправки формы используйтеreturn true;
.Проблема здесь в том, что «on» применяется ко всем элементам, существующим ВРЕМЯ. Когда вы создаете элемент динамически, вам нужно снова запустить:
Поскольку формы обычно имеют имена или идентификаторы, вы также можете просто прикрепить их к новой форме. Если я создаю много динамического материала, я включаю функцию настройки или привязки:
Итак, всякий раз, когда вы что-то создаете (обычно кнопки в моем случае), я просто вызываю bindItems, чтобы обновить все на странице.
Мне не нравится использовать «тело» или элементы документа, потому что с вкладками и модальными окнами они обычно остаются и делают то, чего вы не ожидаете. Я всегда стараюсь быть максимально конкретным, если это не простой одностраничный проект.
источник