Остановить jQuery от вызова следующих событий - PullRequest
3 голосов
/ 29 июня 2010

Я пишу плагин jQuery в первый раз, и мне интересно, есть ли способ остановить запуск jQuery следующих прикрепленных событий.

Пример:

$(this).submit(function(){
    return $(this).do_some_validation();
}

При проверкене прошел (т.е. функция вернула false), форма не должна быть отправлена, но если есть какие-либо другие обработчики событий, прикрепленные, только последнее возвращаемое значение обработчика может предотвратить отправку формы.

Ответы [ 5 ]

6 голосов
/ 16 февраля 2011

Возможно, вы также захотите посмотреть event.stopImmediatePropagation , так как stopPropagation "не помешает запуску других обработчиков на одном и том же элементе" (например, два обработчика отправки в одной и той же форме все равно должны быть запущеныпри использовании stopPropagation).

6 голосов
/ 29 июня 2010

Используйте метод stopPropagation ():

$(this).submit(function(e){
    e.stopPropagation();
    return $(this).do_some_validation();
}
2 голосов
/ 29 июня 2010

Вы можете взглянуть на функцию event.stopPropagation().

1 голос
/ 30 июня 2010

stopPropagation() работает с большинством событий, но может не всегда работать с делегированными событиями, .live() и .delegate().

return false; - надежный способ, если stopPropogation не работает первый .

0 голосов
/ 30 июня 2010

Я использую эту функцию с .live() и никогда не имею проблем

jQuery("a.entryTable, a.entryDelete").live("click", function(e) {   
    e.preventDefault();
    e.stopPropagation();

    // code

    return false;
});
...