gpt4 book ai didi

javascript - 有没有办法添加单个事件监听器来覆盖多个事件监听器?

转载 作者:行者123 更新时间:2023-11-28 17:23:17 26 4
gpt4 key购买 nike

只要用户移动,就会发生一些事情,因此为此我设置了三个事件监听器:

document.addEventListener('mousemove', this.doThing)
document.addEventListener('click', this.doThing)
document.addEventListener('keydown', this.doThing)

最终也需要删除:

document.removeEventListener('mousemove', this.doThing)
document.removeEventListener('click', this.doThing)
document.removeEventListener('keydown', this.doThing)

问题是,它们都在做完全相同的事情,所以我想知道是否有更好的方法将它们分组到单个添加和删除事件监听器中。或者是否有一个可以涵盖用户的任何移动/交互?

最佳答案

你可以这样做:

["mousemove", "click", "keydown"].forEach(evt => document.addEventListener(evt, this.doThing));
["mousemove", "click", "keydown"].forEach(evt => document.removeEventListener(evt, this.doThing));

带有 lambda 的简单通用版本可以是:

let addHandlers = (events, handler) => events.forEach(evt => document.addEventListener(evt, handler))
let removeHandlers = (events, handler) => events.forEach(evt => document.addEventListener(evt, handler))
addHandlers(["mousemove", "click"], this.doThing);
removeHandlers(["mousemove", "click"], this.doThing);

关于javascript - 有没有办法添加单个事件监听器来覆盖多个事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52059794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com