JavaScript中DOM事件监听器的叠加与移除机制
本文解析JavaScript中DOM事件监听的两种核心机制。通过对比on属性赋值与addEventListener方法,说明后者支持多次注册而不互相覆盖的特性。重点阐述移除监听时必须使用具名函数,因为匿名函数无法被正确移除,确保开发者掌握事件绑定的完整生命周期管理。
DOM事件监听的覆盖问题
HTML DOM元素包含众多以on开头的事件监听属性,例如onload、onclick等,具体列表可参考DOM事件文档。然而,若直接通过属性赋值方式注册同一种事件,后续注册的代码会直接覆盖之前的注册结果。
window.onresize = function(){
alert(1);
}
window.onresize = function(){
alert(2);
}
// 改变窗口大小时,只会弹出2
addEventListener的叠加特性
使用addEventListener进行监听
采用addEventListener方法添加事件监听器,允许对同一事件重复注册多次,且各监听器之间不会发生相互覆盖的情况。
window.addEventListener("resize",function(){
alert(1)
})
window.addEventListener("resize",function(){
alert(2)
})
// 改变窗口大小时,先后弹出1和2
需要注意的是,在此处指定事件类型时,不需要添加"on"前缀。
removeEventListener的移除限制
使用removeEventListener移除监听
removeEventListener方法与addEventListener相对应,专门用于移除已注册的事件监听器。
若要成功移除事件句柄,addEventListener() 所绑定的执行函数必须是外部定义的具名函数;若使用匿名函数注册事件,则无法将其移除。
// 匿名函数事件无法移除
window.addEventListener("resize",function(){
alert(1)
})
// 监听具名函数事件
function myResize(){
alert(2)
}
window.addEventListener("resize",myResize)
// 移除事件监听
window.removeEventListener("resize",myResize)
总结
以上内容介绍了JavaScript中监听事件的叠加注册与移除方法,希望能为读者提供帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持!
JS监听滚动事件:回到顶部按钮的显示与隐藏逻辑
2026-11-05 16:19:37
JavaScript怎么读写LocalStorage与SessionStorage
2026-11-05 15:40:11
anime.js 与 GSAP 对比:轻量级项目该怎么选择动画库
2026-11-05 11:24:55
flv.js 与 hls.js 在直播场景下的选型对比
2026-11-05 08:18:52
JavaScript能做什么?前端开发中的作用与应用场景解析
2026-11-04 23:17:54
