茶叶蛋 发表于 2022-7-14 00:25:44

用preventDefault()方法无法取消元素的点击事件

!(data/attachment/forum/202207/14/002328yowmmoxxxaxp0xqy.png)
原网页中自带的SubscribeItem()点击事件
以下用preventDefault()方法无法取消
var Sub = document.querySelector('#SubscribeItemBtn');
    Sub.addEventListener('click',(e)=>{
      e.preventDefault();
    })

李恒道 发表于 2022-7-14 01:55:25

on系列函数和addevent具体行为没研究过
但是都拿到dom元素了
直接删掉onclick不好吗

steven026 发表于 2022-7-14 09:32:01

本帖最后由 steven026 于 2022-7-14 09:36 编辑

https://developer.mozilla.org/zh ... vent/preventDefault
我的理解是e.preventDefault()只能阻止浏览器默认事件(比如右键菜单)

如果你要阻止按钮点击事件需要改成
e.stopPropagation() //禁止向上冒泡

e.stopImmediatePropagation() //禁止剩余同类事件(先添加的无法禁止)

另外针对这种直接写在DOM标签上的onclick,可以直接用JS删除
document.querySelector('#SubscribeItemBtn').removeAttribute("onclick")

页: [1]
查看完整版本: 用preventDefault()方法无法取消元素的点击事件