Зачем использовать stopImmediatePropagation() в форме?

#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() обрабатывает события после их распространения в верхнюю часть документа, остановить распространение событий в реальном времени невозможно.