一尘不染

event.preventDefault() 与返回 false

javascript

当我想在某个事件被触发后阻止其他事件处理程序执行时,我可以使用两种技术之一。我将在示例中使用 jQuery,但这也适用于纯 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?有什么更好的方法?


阅读 134

收藏
2022-01-21

共1个答案

一尘不染

return falsejQuery 事件处理程序e.preventDefault中调用和调用e.stopPropagation传递的jQuery.Event 对象实际上是相同 的。

e.preventDefault()将防止默认事件发生,e.stopPropagation()将防止事件冒泡,return false并将两者兼而有之。请注意,此行为与普通(非 jQuery)事件处理程序不同,其中值得注意的是,return false不会阻止事件冒泡。

2022-01-21