【click事件重复触发】解决方案

如果 click 事件被多次触发,大概是因为事件监听器被重复绑定到同一个元素上。要解决这个问题,需要确保 click 事件监听器只被添加一次,或者在每次重新添加前先移除之前的监听器。
(如果单纯是因为人为的手抖,频繁操作,可以用【节流】和【防抖】来避免)

解法一:确保只添加一次事件监听器

if (!this.clickEventAdded) {
  this._viewer.on('click', (e) => {
    // ... click event handler logic ...
  });
  this.clickEventAdded = true;
}

解法二: 在添加新的监听器之前移除已有的监听器

// 移除所有的click事件监听器
this._viewer.off('click');

// 添加新的click事件监听器
this._viewer.on('click', (e) => {
  // ... click event handler logic ...
});

解法三:使用命名函数作为事件处理器

和解法二相同,只是把函数提取出来做一层抽象

// 定义事件处理函数
const handleClick = (e) => {
  // ... click event handler logic ...
};

// 移除现有的处理函数以避免重复
this._viewer.off('click', handleClick);

// 绑定事件处理函数
this._viewer.on('click', handleClick);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值