问题

当我想防止其他事件处理程序在某个事件触发后执行,我可以使用两种技术之一.我将在示例中使用jQuery,但这同样适用于plain-JS:

1. event.preventDefault()

$('a').click(function (e) {
    // custom handling here
    e.preventDefault();
});

2. return false

$('a').click(function () {
    // custom handling here
    return false;
});

这两种停止事件传播的方法之间有什么显着差异吗?

对我来说, return false; 更简单,更短,并且可能比执行一个方法更容易出错.使用该方法,您必须记住正确的套管,括号等.

此外,我必须定义回调中的第一个参数才能调用该方法.也许,有一些原因我应该避免这样做,并使用 preventDefault 而不是?什么是更好的方法?



解决方法

在jQuery事件处理程序中从

返回false 实际上与调用 e.preventDefault e.stopPropagation < / code>上传的 jQuery.Event对象.

e.preventDefault()会阻止默认事件发生, e.stopPropagation()会阻止事件冒泡,代码>将同时执行.请注意,此行为与 normal (非jQuery)事件处理程序不同,其中, return false 不会

资料来源: John Resig

使用event.preventDefault()的任何好处over"return false"取消href点击?




相关问题推荐