阻止jQuery调用下一个事件

时间:2010-06-29 17:22:13

标签: javascript jquery events submit

我第一次写了一个jQuery插件,我想知道是否有办法阻止jQuery运行下一个附加事件。

示例:

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

如果验证未通过(即函数返回false),则不应提交表单,但如果附加了任何其他事件处理程序,则只有最后一个处理程序返回值可以阻止提交表单。

5 个答案:

答案 0 :(得分:6)

使用stopPropagation()方法:

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

答案 1 :(得分:6)

您可能还想查看event.stopImmediatePropagation,因为stopPropagation“不会阻止同一元素上的其他处理程序运行”(例如,如果使用stopPropagation,仍应触发同一表单上的两个提交处理程序)

答案 2 :(得分:2)

您可以查看event.stopPropagation()功能。

答案 3 :(得分:1)

stopPropagation()适用于大多数活动,但可能并不总是适用于委派活动,.live().delegate()

如果stopPropogation无效优先

return false;是一种万无一失的方式。

答案 4 :(得分:0)

我将此功能与.live()一起使用,从不出现问题

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

    // code

    return false;
});