event.preventDefault() vs return false: 在事件处理中有什么区别?
大家好!我刚开始学习JavaScript和jQuery,遇到了一件奇怪的事情。当我为链接编写点击处理程序时,我想阻止它跳转。在一些示例中,我看到`event.preventDefault()`,而在另一些示例中,只是在函数末尾写了`return false`。它们做的是同一件事吗?
下面是一个让我困惑的例子:
```javascript
// 选项1
document.querySelector('a').addEventListener('click', function(event) {
event.preventDefault();
console.log('链接未生效');
});
// 选项2(使用jQuery)
$('a').click(function() {
console.log('链接未生效');
return false;
});
```
两个选项看起来效果一样——链接没有跳转。但我注意到,如果我在纯JavaScript(没有jQuery)中使用`return false`,它并不总是有效。这是为什么?而且它们对事件冒泡的影响有区别吗?
我读到过,`return false`可能会阻止冒泡,而`preventDefault()`不会。这是真的吗?以及何时应该使用哪一个?