为什么返回 false,或者事实上,为什么返回任何东西?
函数中的代码return(val);将 的值返回给函数val的调用者。或者,引用 MDN 网络文档,它...
...结束函数执行并指定要返回给函数调用者的值。(来源:MDN 网络文档:return。)
return false;then 在事件处理程序中很有用,因为事件处理程序使用此值来确定进一步的操作。 return false;取消通常由处理程序发生的事件,同时return true;让这些事件发生。再次引用 MDN 网络文档...
处理程序的返回值确定事件是否被取消。(来源:MDN Web 文档:DOM OnEvent Handlers。)
如果你要取消一个事件,返回 false;本身是不够的。
您还应该使用Event.preventDefault();and Event.stopPropagation();。
Event.preventDefault();:停止默认的链接点击行为。
Event 接口的 preventDefault() 方法告诉用户代理,如果事件没有得到显式处理,则不应像通常那样采取其默认操作。(来源:MDN 网络文档。)
Event.stopPropagation();:阻止事件单击包含父级 DOM 中的链接(即,如果两个链接在 UI 中视觉上重叠)。
Event 接口的 stopPropagation() 方法可防止在捕获和冒泡阶段进一步传播当前事件。(来源:MDN 网络文档。)
工作演示
在这个演示中,我们取消了一个链接的功能,并通过、和onclick来防止链接被点击。return false;preventDefault()stopPropagation()
完整的 JSBin 演示。
StackOverflow 演示...
document.getElementById('my-link').addEventListener('click', function(e) {
console.log('Click happened for: ' + e.target.id);
e.preventDefault();
e.stopPropagation();
return false;
});