2010-06-29 2 views
3

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

Пример:

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

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

ответ

6

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

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

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

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

0

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

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

    // code 

    return false; 
}); 
5

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

Смежные вопросы