JS事件绑定的常用方式实例总结


Posted in Javascript onMarch 02, 2019

本文实例讲述了JS事件绑定的常用方式。分享给大家供大家参考,具体如下:

常用的事件绑定的几种方式有三种:

  • 直接在 dom 元素上进行绑定。
  • 用 on 绑定。
  • 用 addEventListener、attachEvent 绑定。

一、直接在 dom 元素上进行绑定

<input id="btn1" type="button" onclick="test();" />

二、用 on 绑定

兼容性:在IE,FF,Chrome,Safari,Mozilla,Opera下都适用。

// onclick绑定
document.body.onclick = () => {
  console.log(111)
}
// 解绑
document.body.onclick = null;

但是,同一个 dom 元素上,on 只能绑定一个同类型事件,后者会覆盖前者,不同类型的事件可以绑定多个。

三、用 addEventListener、attachEvent 绑定

同一个 dom 元素上,用 addEventListener、attachEvent 可以绑定多个同类型事件。

但是,addEventListener 事件执行顺序按照事件绑定的先后顺序执行;attachEvent 事件执行顺序则是随机的。

addEventListener

// 绑定
document.body.addEventListener('click', bodyClick, false);
// 解绑
document.body.removeEventListener('click', bodyClick, false);

注意:removeEventListener 第二个参数要和 addEventListener 指向同一个函数才能解绑成功。

addEventListener 的第三个参数若为 false,函数在冒泡阶段执行;若为 true,函数在捕获阶段执行。默认为 false。

<div id="box">
   <div id="child"></div>
</div>
box.addEventListener("click", function(){
  console.log("box");
}, false);
child.addEventListener("click", function(){
  console.log("child");
});
// 执行顺序为 child box
box.addEventListener("click", function(){
  console.log("box");
}, true);
child.addEventListener("click", function(){
  console.log("child");
});
// 执行顺序为 box child

兼容性

Chrome 和 FireFox 只支持 addEventListener;IE 只支持 attachEvent(IE11开始不支持了)。

所以必须对2种方法做兼容处理。原理是先判断 attachEvent 是否为真,如果为真则用 attachEvent 绑定事件,否则用 addEventListener 绑定事件。

可以封装一个函数做兼容性处理:

//dom绑定事件的元素,ev事件名,fn执行函数
function myAddEvent(dom, ev, fn){
  if(dom.attachEvent){
    dom.attachEvent("on"+ev, fn);
  }else {
    dom.addEventListener(ev, fn, false);
  }
}
myAddEvent(d1, "click", ()=>{
  console.log(1111)
});

另外

以上三种方式绑定的点击事件都可以用下面这条语句触发

document.getElementById("btn").click();

PS:关于javascript事件说明可参考本站javascript事件与功能说明大全:http://tools.3water.com/table/javascript_event

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
一些常用的JS功能函数代码
Jun 23 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
Mar 19 Javascript
Windows 系统下安装和部署Egret的开发环境
Jul 31 Javascript
jQuery删除节点用法示例(remove方法)
Sep 08 Javascript
详解jquery easyui之datagrid使用参考
Dec 05 Javascript
基于DOM节点删除之empty和remove的区别(详解)
Sep 11 Javascript
webpack将js打包后的map文件详解
Feb 22 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
Apr 20 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
May 15 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
Oct 18 Javascript
checkbox在vue中的用法小结
Nov 13 Javascript
vue中配置scss全局变量的步骤
Dec 28 Vue.js
JS实现获取数组中最大值或最小值功能示例
Mar 02 #Javascript
JS使用队列对数组排列,基数排序算法示例
Mar 02 #Javascript
VUE引入第三方js包及调用方法讲解
Mar 01 #Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
Mar 01 #Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
Mar 01 #Javascript
Angular7.2.7路由使用初体验
Mar 01 #Javascript
vuex实现及简略解析(小结)
Mar 01 #Javascript
You might like
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
PHP安装问题
2006/10/09 PHP
php4与php5的区别小结(配置异同)
2011/12/20 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
Symfony2框架创建项目与模板设置实例详解
2016/03/17 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
JQuery实现简单验证码提示解决方案
2012/12/20 Javascript
JS 页面计时器示例代码
2013/10/28 Javascript
使用javascript实现简单的选项卡切换
2015/01/09 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
[59:42]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python编写简单爬虫资料汇总
2016/03/22 Python
Python实现的递归神经网络简单示例
2017/08/11 Python
用Pygal绘制直方图代码示例
2017/12/07 Python
机器学习之KNN算法原理及Python实现方法详解
2018/07/09 Python
解决pyinstaller打包pyqt5的问题
2019/01/08 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
Python测试线程应用程序过程解析
2019/12/31 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
如何解决python多种版本冲突问题
2020/10/13 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
有影响力的品牌之家:Our Social Collective
2019/06/08 全球购物
软件配置管理有什么好处
2015/04/15 面试题
大专毕业生自我鉴定
2013/11/21 职场文书
毕业学生推荐信
2013/12/01 职场文书
名人演讲稿范文
2013/12/28 职场文书
建筑节能汇报材料
2014/08/22 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书