一尘不染

JavaScript 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改为使用它?有什么更好的方法?


阅读 277

收藏
2020-04-22

共1个答案

一尘不染

return falsejQuery事件处理程序内部进行
调用实际上e.preventDefaulte.stopPropagation在传递的jQuery.Event对象上进行调用相同 。

e.preventDefault()将防止发生默认事件,e.stopPropagation()将防止事件冒泡,并且return false两者都会发生。请注意,此行为不同于 正常 (非jQuery的)事件处理程序,其中,值得注意的是,return false没有
冒泡停止该事件。

2020-04-22