今天项目上遇到一个问题,是因为addEventListener绑定事件时,执行了多次,导致执行了多次事件。在不能让绑定事件执行一次的情况下有没有办法解决这个问题呢?

模拟代码:

function handleAction (event) {console.log('i am action', event);
}
var btn = document.getElementById('button');
btn.addEventListener('click', event => handleAction(event), false);
btn.addEventListener('click', event => handleAction(event), false);

可以用闭包解决这个问题

function handleAction (event) {console.log('i am action', event);
}
var newHandle = function (event) {handleAction(event)
}
var btn = document.getElementById('button');
btn.addEventListener('click', newHandle, false);
btn.addEventListener('click', newHandle, false);

我理解的原理就是浏览器认为 newHandle 是一个相同的方法,所以就不会绑定多次,比如用下面方法也不会绑定多次,但是event 值读取不到

function handleAction (event) {console.log('i am action', event);
}
var btn = document.getElementById('button');
btn.addEventListener('click', handleAction, false);
btn.addEventListener('click', handleAction, false);

JS addEventListener多次绑定同一事件,触发多次相关推荐

  1. JS解决因循环绑定click事件失效

    很多js新手都会在绑定事件遇到绑定失效的问题. 大致思路就是,比如用一个循环让对应的button按钮绑定对应的事件. 比如这样 <button id="1">1 < ...

  2. js控制a标签点击事件 触发下载

    问题背景,动态获取data把url赋值到a标签的url中,让a标签自动下载 首先想到的应该是$('xxx').click(), 查资料明白:js中的$(...).click()事件只能触发绑定的onC ...

  3. JS前端CSS+元素,鼠标事件触发鼠标模形变成手状的形状

    一:直接使用CSS样式改变 当鼠标移动到元素上显示手状. style="cursor:pointer;" 二:使用JS触发事件改变原样式: 在鼠标事件onmouseover(鼠标移 ...

  4. IE中输入框绑定input事件触发解析(input事件初始化自动执行问题解决)

    在React项目中碰到了个问题,输入框绑定了input事件,在IE中初始化会自动执行,刚开始以为是只要有placeholder就会导致问题,后面网上搜了一轮,自己手撸了一下,总结了导致绑定的input ...

  5. jQuery on 绑定的事件触发多次

    jquery用on绑定事件,在代码执行过程中,可能会遇到多次执行的情况. 解决方案是在on的事件前面加上一个off,再on. $('#btnBind').off('click').on('click' ...

  6. 关于JS 事件冒泡和onclick,click,on()事件触发顺序

    今天在给JQgrid中的标签添加click事件的时候,发现一个问题. JQgrid的table中,点击任何位置,都会勾选点击行的checkbox,而我希望在点击我的标签的时候,不要勾选checkbox ...

  7. click事件在什么时候出发_关于JS 事件冒泡和onclick,click,on()事件触发顺序

    今天在给JQgrid中的标签添加click事件的时候,发现一个问题. JQgrid的table中,点击任何位置,都会勾选点击行的checkbox,而我希望在点击我的标签的时候,不要勾选checkbox ...

  8. js基础总结——js 获取元素节点、js 绑定onclick事件、js 获取属性 修改属性值、js 获取子元素、js 改变css样式

    参考书籍:<JavaScript DOM编程艺术 第2版> 本博客代码的测试页面是:https://www.layui.com/ js dom操作 js 获取元素节点 一份document ...

  9. uniapp 扫描枪获取条码不全解决办法,vue组件,使用双向绑定,回车事件触发,获取文本不全问题

    原因分析: uniapp使用vue,双向绑定组件,在input标签loop事件循环获取文本的过程中,读取文本信息不是顺序读取,如果条码中包含了回车键,比如扫描枪,扫描文本后会追加回车键,监控文本读取还 ...

最新文章

  1. Spark2.2.0分布式集群安装(StandAlone模式)
  2. 企业网站SEO优化如何做引流并促进转化?
  3. postman 使用_Postman使用方法
  4. 【交换机】配置RNStrack的功能原理是什么?
  5. matlab偶极矩电场强度分布图_课程设计用MATLAB模拟偶极子的电场分布.doc
  6. source insight 4 破解
  7. androidstudio自带git用法_Android Studio的git功能的使用介绍
  8. (PDF格式论文加书签)Tampermonkey + 知网下载助手 + FreePic2Pdf
  9. 菜鸟html代码在线,html菜鸟教程,HTML新手如何快速入门
  10. 富士通Fujitsu DPK8510E 打印机驱动
  11. qcc512x_qcc302x笔记之环境搭建(一)
  12. mshtml组件引用的问题 (转)
  13. CSS学习03:CSS文本属性
  14. android仿qq聊天界面版带表情、相册、照相
  15. 图书管理系统接口文档
  16. PyQt5_pyqtgraph股票SAR指标
  17. 解决Nginx出现 403 Forbidden的办法
  18. IMO班聊新版本更给力 企业用车、公费电话上线
  19. VB 2010 (20)多态性
  20. 开机后黑屏看不到桌面_教你win10电脑开机后黑屏进不了桌面的排查解决方案

热门文章

  1. Flutter 使用SnackBar
  2. 卤菜之预处理篇(辣油的制作)
  3. 【cartographer】园区场景自动驾驶-利用GPS实现ENU坐标系下的建图与定位
  4. 如何在DAppNode中运行以太坊经典(ETC)?
  5. GoLang笔记—基础语法篇
  6. Django入门基础详解
  7. 【STM32】基于stm32的阿里云智能家居
  8. 澳大利亚计算机协会认证的学校有哪些,澳洲EA认证有哪些学校?(上)
  9. Ubuntu安装ohmyzsh
  10. 数据结构课程设计 : 博物馆导航系统