javascript - 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});
解决方案
如果您像这样使用它,它会起作用
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>
推荐阅读
- php - 苹果推送通知 2021
- automator - 自动播放操作
- c# - 根据暗/亮模式更改 Windows 应用程序图标
- angular - 使用角度材料在相机扫描仪的右上角设置关闭图标
- android - 使用包装内容时android中最大高度的重量?
- python - 如何知道 tf.data.Dataset.from_generator() 中的图像数量
- javascript - 如何从段落中选择多个单词?(硒)
- javascript - Cypress API 测试 - 使用自定义命令返回值以避免重复代码
- c - 如何在 AVR 微控制器中使用看门狗
- c++ - 在 C++ 中的多态性中使用初始化列表会造成混淆,因为使用类代替变量