首页 > 解决方案 > javascript - event.defaultPrevented 永远不会为真

问题描述

我试图在我的脚本中使用事件,但似乎我不明白 event.preventDefault()/event.defaultPrevented 是如何工作的:

var e = new Event('test');

e.defaultPrevented;
> false

e.preventDefault();

e.defaultPrevented;
> false

我该如何e.defaultPrevented设置true?它在 Chrome/Firefox/Edge 中的行为方式相同,所以我必须做错事。

谢谢 :)

编辑:问题是我忘记创建事件:

var e = new Event('test', {cancelable: true});

标签: javascriptdom-events

解决方案


如果您像这样使用它,它会起作用

document.querySelector("a").addEventListener("click", function(e) {
  console.log(e.defaultPrevented)
  e.preventDefault();
  console.log(e.defaultPrevented)
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a id="test">Click</a>

jQuery有一个特定的功能

$("a").on("click", function(e) {
  console.log(e.isDefaultPrevented())
  e.preventDefault();
  console.log(e.isDefaultPrevented())
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a id="test">Click</a>


推荐阅读