#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть форма с именем frm_contact, и мне нужно привязать событие отправки этой формы. «Проблема» (или лучше…сомнение) заключается в том, что если я НЕ использую e.stopImmediatePropagation();
событие отправки, вызывается много раз. Я исправил это с помощью stopImmediatePropagation()
функции.
Я связываю событие таким образом:
$('#frm_contact').live("submit", function(e){
});
Я использую live()
, почему мне нужно использовать stopImmediatePropagation() ?
Комментарии:
1. Как вы запускаете
submit
событие?2. Может быть, вы связываете обработчик событий несколько раз? Это было бы единственным объяснением того, почему обработчик вызывается несколько раз.
3. Феликс, я загружаю форму с помощью .html(), но я использую .live(), так в чем же эта проблема?
4. Вы действительно используете
$('frm_contact')
в качестве селектора? Мне кажется, это неверно.5. @Quincy, что? wy недействителен для вас? у меня есть <идентификатор формы=»frm_contact»> … </form>
Ответ №1:
Я не знаю, говорите ли вы, что ваш скрипт не работает, или спрашиваете, что event.stopImmediatePropagation()
это значит…
в любом случае, вот выдержка из того, что это значит:
В дополнение к предотвращению выполнения любых дополнительных обработчиков элемента, этот метод также останавливает пузырящийся неявный вызов
event.stopPropagation()
. Чтобы просто предотвратить передачу события в элементы-предки, но разрешить другим обработчикам событий выполняться в том же элементе, мы можем использоватьevent.stopPropagation()
вместо.Используется
event.isImmediatePropagationStopped()
, чтобы узнать, вызывался ли этот метод когда-либо (для этого объекта события).
Больше информации просто сначала погуглите 🙂
но вот оно: http://api.jquery.com/event.stopImmediatePropagation /
Комментарии:
1. Поскольку метод .live() обрабатывает события после их распространения в верхнюю часть документа, остановить распространение событий в реальном времени невозможно.