浅谈JavaScript事件绑定的常用方法及其优缺点分析


Posted in Javascript onNovember 01, 2016

传统方式 

element.onclick = function(e){

     // ...

   };

 1.  传统绑定的优点

非常简单和稳定,可以确保它在你使用的不同浏览器中运作一致

处理事件时,this关键字引用的是当前元素,这很有帮组

2. 传统绑定的缺点

传统方法只会在事件冒泡中运行,而非捕获和冒泡

一个元素一次只能绑定一个事件处理函数。新绑定的事件处理函数会覆盖旧的事件处理函数

事件对象参数(e)仅非IE浏览器可用

W3C方式 

element.addEventListener('click', function(e){

    // ...

  }, false);

1. W3C绑定的优点

该方法同时支持事件处理的捕获和冒泡阶段。事件阶段取决于addEventListener最后的参数设置:false (冒泡) 或 true (捕获)。

在事件处理函数内部,this关键字引用当前元素。

事件对象总是可以通过处理函数的第一个参数(e)捕获。

可以为同一个元素绑定你所希望的多个事件,同时并不会覆盖先前绑定的事件

2. W3C绑定的缺点

IE不支持,你必须使用IE的attachEvent函数替代。

IE方式

element.attachEvent('onclick', function(){

    // ...

  });

1. IE方式的优点

可以为同一个元素绑定你所希望的多个事件,同时并不会覆盖先前绑定的事件。

2. IE方式的缺点

IE仅支持事件捕获的冒泡阶段

事件监听函数内的this关键字指向了window对象,而不是当前元素(IE的一个巨大缺点)

事件对象仅存在与window.event参数中

事件必须以ontype的形式命名,比如,onclick而非click

仅IE可用。你必须在非IE浏览器中使用W3C的addEventListener

Dean Edwards的方案(addEvent/removeEvent库)   

1. addEvent的优点

可以在所有浏览器中工作,就算是更古老无任何支持的浏览器

this关键字可以在所有的绑定函数中使用,指向的是当前元素

中和了所有防止浏览器默认行为和阻止事件冒泡的各种浏览器特定函数

不管浏览器类型,事件对象总是作为第一个对象传入

2. addEvent的缺点

仅工作在冒泡阶段(因为它深入使用事件绑定的传统方式)

以上就是小编为大家带来的浅谈JavaScript事件绑定的常用方法及其优缺点分析全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
Aug 31 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
Jan 11 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
Apr 08 Javascript
jquery实现输入框动态增减的实例代码
Jul 14 Javascript
jquery验证表单中的单选与多选实例
Aug 18 Javascript
jquery中event对象属性与方法小结
Dec 18 Javascript
js调试系列 断点与动态调试[基础篇]
Jun 18 Javascript
jQuery标签替换函数replaceWith()的使用例子
Aug 28 Javascript
angularjs $http实现form表单提交示例
Jun 09 Javascript
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
layui文件上传控件带更改后数据传值的方法
Sep 23 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
Jul 27 Javascript
微信小程序 wxapp内容组件 progress详细介绍
Oct 31 #Javascript
微信小程序 wxapp内容组件 text详细介绍
Oct 31 #Javascript
微信小程序 wxapp内容组件 icon详细介绍
Oct 31 #Javascript
微信小程序 wxapp导航 navigator详解
Oct 31 #Javascript
微信小程序 wxapp地图 map详解
Oct 31 #Javascript
微信小程序 wxapp画布 canvas详细介绍
Oct 31 #Javascript
微信小程序 wxapp视图容器 view详解
Oct 31 #Javascript
You might like
全国FM电台频率大全 - 14 江西省
2020/03/11 无线电
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
基于mysql的论坛(6)
2006/10/09 PHP
php编写一个简单的路由类
2011/04/13 PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
2013/03/06 PHP
详解Yii2.0使用AR联表查询实例
2017/06/16 PHP
php使用自带dom扩展进行元素匹配的原理解析
2020/05/29 PHP
用javascript实现自定义标签
2007/05/08 Javascript
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
ng2学习笔记之bootstrap中的component使用教程
2017/03/09 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
详解vue中使用微信jssdk
2019/04/19 Javascript
解决vue-router 二级导航默认选中某一选项的问题
2019/11/01 Javascript
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
pytorch查看通道数 维数 尺寸大小方式
2020/05/26 Python
python+opencv实现车道线检测
2021/02/19 Python
德国鞋子网上商店:Omoda.de
2017/03/31 全球购物
采购主管的岗位职责
2013/12/17 职场文书
高中美术教学反思
2014/01/19 职场文书
学校联谊活动方案
2014/02/15 职场文书
《识字五》教学反思
2014/03/01 职场文书
青春励志演讲稿
2014/04/29 职场文书
设计专业毕业生求职信
2014/06/25 职场文书
巾帼志愿者活动方案
2014/08/17 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
2014年秘书工作总结
2014/11/25 职场文书
勇敢的心观后感
2015/06/09 职场文书