关于addEventListener的使用和注意项

一、addEventListener基本理解

addEventListener 是一个 JavaScript DOM 方法,用于向指定元素添加事件监听器。它接受三个参数:

  1. 事件类型:一个字符串,表示要监听的事件类型,如 ‘click’、‘mouseover’、‘keydown’ 等。

  2. 事件处理函数:当指定的事件发生时,会调用这个函数。这个函数接收一个参数,即触发事件的 Event 对象。

  3. 可选参数:这个参数可以是一个布尔值或一个对象。如果是布尔值,true 表示在捕获阶段调用事件处理函数,false 表示在冒泡阶段调用事件处理函数。如果是对象,可以包含以下属性:

    • capture:布尔值,表示是否在捕获阶段调用事件处理函数。
    • passive:布尔值,如果设置为 true,则表示事件处理函数不会调用 event.preventDefault()。这对于某些需要提高性能的滚动或触摸事件非常有用。
    • once:布尔值,如果设置为 true,则事件处理函数在第一次触发后就会被移除。(请注意,once 属性并非所有浏览器都支持,你需要检查你的目标浏览器是否支持这个属性。)
// 这是一个使用 addEventListener 的示例:
	document.querySelector('button').addEventListener('click', function(event) {
  		console.log('Button clicked!');
	}, false);
// 在这个示例中,我们向一个按钮元素添加了一个点击事件监听器。当按钮被点击时,控制台会打印出 "Button clicked!"。

二、注意项

  1. addEventListener 用于向指定元素添加事件监听器,而 removeEventListener 用于移除已添加的事件监听器。为了避免内存泄漏,我们通常在组件卸载或页面销毁时移除已添加的事件监听器。

  2. addEventListener 的第一个参数是要监听的事件类型(如 ‘click’、‘touchstart’ 等)。

  3. addEventListener 的第二个参数是事件处理函数。为了能够在后面通过 removeEventListener 移除事件监听器,事件处理函数不应该是匿名函数或箭头函数,因为它们每次都会创建一个新的函数实例。也就是一个事件监听的 addEventListener 和 removeEventListener 的第二个参数应该是同一个事件处理函数实例。

  4. addEventListener 的第三个参数是一个可选参数,可以是一个布尔值或一个对象。如果是一个布尔值,true 表示在捕获阶段调用事件处理函数,false 表示在冒泡阶段调用事件处理函数。如果是一个对象,可以包含 capture 和 passive 两个属性。capture 属性的作用和上面提到的布尔值一样,passive 属性设置为 false 表示事件处理函数可以调用 event.preventDefault() 来阻止事件的默认行为。

  5. removeEventListener 和 addEventListener 里面的参数应该完全一样。如果 addEventListener 和 removeEventListener 的参数不一样,那么 removeEventListener 可能无法正确地移除事件监听器。removeEventListener 需要知道具体的事件类型、事件处理函数以及是否在捕获阶段移除事件监听器,才能正确地移除事件监听器。如果这些参数与添加事件监听器时的参数不一致,那么 removeEventListener 将无法找到并移除事件监听器。例如,如果你在添加事件监听器时使用了捕获阶段,但在移除事件监听器时没有指定,那么事件监听器将不会被移除,因为默认情况下,removeEventListener 会在冒泡阶段移除事件监听器。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值