jQuery 1.7 .on () и динамический перехват форм - PullRequest
2 голосов
/ 09 января 2012

У меня проблема с последней функцией on() в jQuery 1.7. Я перевожу все мои существующие вызовы live() в новую функцию on().

В прошлом я использовал live() всякий раз, когда создавал новый элемент или добавлял некоторую разметку из AJAX.

С помощью jQuery 1.7 Если я добавляю разметку формы, возвращенную через AJAX, и пытаюсь использовать e.preventDefault или return false, чтобы остановить ее отправку (например, для проверки) - форма отправляется как обычно.

$(document).on('submit', 'form', function(e) {
    alert('You tried to submit the form');
    e.preventDefault();
});

Ответы [ 2 ]

1 голос
/ 09 января 2012

Ваш код действителен.

DEMO

Если вы опубликуете еще какой-нибудь код, мы могли бы взглянуть и посмотреть, есть ли у вас другие проблемы


Но если предположить, что эта форма присутствует при отображении страницы, я бы просто сделал это:

$("form").on('submit', function(e) {
    alert('You tried to submit the form');
    e.preventDefault();
});

(я предполагаю, что ваша страница отображается с уже существующей формой)

0 голосов
/ 13 января 2012

Это было подтверждено как ошибка jQuery в 1.7.1, которая должна быть исправлена ​​в 1.7.2: http://bugs.jquery.com/ticket/11145

Мой оригинальный код правильный (для динамических элементов DOM). Код Адама Ракиса верен для существующих элементов DOM.

...