浅谈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 相关文章推荐
JQuery index()方法使用代码
Jun 02 Javascript
jquery 操作DOM的基本用法分享
Apr 05 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
Aug 02 Javascript
红米手机抢购的js代码
Mar 10 Javascript
JavaScript中的迭代器和生成器详解
Oct 29 Javascript
jQuery中:input选择器用法实例
Jan 03 Javascript
jQuery animate easing使用方法图文详解
Jun 17 Javascript
AngularJS表格详解及示例代码
Aug 17 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
Jun 19 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
Jun 04 Javascript
微信小程序订阅消息(java后端实现)开发
Jun 01 Javascript
解决vue打包 npm run build-test突然不动了的问题
Nov 13 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
浅谈电磁辐射对健康的影响
2021/03/01 无线电
php header示例代码(推荐)
2010/09/08 PHP
php笔记之:AOP的应用
2013/04/24 PHP
PHP中substr函数字符串截取用法分析
2016/01/07 PHP
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
JS 遮照层实现代码
2010/03/31 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
jQuery异步验证用户名是否存在示例代码
2014/05/21 Javascript
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
2019/04/08 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
[38:27]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第二场 11.26
2020/11/30 DOTA
纯Python开发的nosql数据库CodernityDB介绍和使用实例
2014/10/23 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
说说如何遍历Python列表的方法示例
2019/02/11 Python
Python学习笔记之图片人脸检测识别实例教程
2019/03/06 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
python实现自动清理重复文件
2020/08/24 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
美国领先的礼品卡网站:GiftCards.com
2016/11/02 全球购物
《神奇的克隆》教学反思
2014/04/10 职场文书
汉语言文学专业自荐信
2014/06/11 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
毕业论文致谢范文
2015/05/14 职场文书
律政俏佳人观后感
2015/06/09 职场文书
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers