我第一次写了一个jQuery插件,我想知道是否有办法阻止jQuery运行下一个附加事件。
示例:
$(this).submit(function(){
return $(this).do_some_validation();
}
如果验证未通过(即函数返回false
),则不应提交表单,但如果附加了任何其他事件处理程序,则只有最后一个处理程序返回值可以阻止提交表单。
答案 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()
。
return false;
是一种万无一失的方式。
答案 4 :(得分:0)
我将此功能与.live()
一起使用,从不出现问题
jQuery("a.entryTable, a.entryDelete").live("click", function(e) {
e.preventDefault();
e.stopPropagation();
// code
return false;
});