浅谈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 相关文章推荐
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
Apr 29 Javascript
js数组操作常用方法
May 08 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
Jul 23 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
Oct 17 Javascript
js闭包引起的事件注册问题介绍
Mar 29 Javascript
Javascript json object 与string 相互转换的简单实现
Sep 27 Javascript
jquery checkbox的相关操作总结
Oct 17 Javascript
javascript使用递归算法求两个数字组合功能示例
Jan 03 Javascript
微信小程序图表插件(wx-charts)实例代码
Jan 17 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
Oct 24 Javascript
vue实现菜单切换功能
May 08 Javascript
手写实现JS中的new
Nov 07 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
php下实现折线图效果的代码
2007/04/28 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
php中namespace及use用法分析
2016/12/06 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
2018/10/14 PHP
php+Ajax处理xml与json格式数据的方法示例
2019/03/04 PHP
php解析非标准json、非规范json的方式实例
2020/12/10 PHP
Javascript 圆角div的实现代码
2009/10/15 Javascript
JavaScript继承方式实例
2010/10/29 Javascript
JsDom 编程小结
2011/08/09 Javascript
js鼠标悬浮出现遮罩层的方法
2015/01/28 Javascript
nodejs中实现阻塞实例
2015/03/24 NodeJs
JQuery实现的图文自动轮播效果插件
2015/06/19 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
详细解读JavaScript的跨浏览器事件处理
2015/08/12 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
JavaScript注册时密码强度校验代码
2017/06/30 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
js实现动态增加文件域表单功能
2018/10/22 Javascript
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
[01:20]辉夜杯背景故事宣传片《辉夜传说》
2015/12/25 DOTA
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
Python实现的读写json文件功能示例
2018/06/05 Python
华为校园招聘上机笔试题 扑克牌大小(python)
2020/04/22 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
2020/04/22 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
2020/11/28 Python
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
西式婚礼证婚词
2014/01/12 职场文书
会计专业大学生求职信范文
2014/01/28 职场文书
新员工辞职信范文
2015/05/12 职场文书
九不准学习心得体会
2016/01/23 职场文书
小学信息技术教学反思
2016/02/16 职场文书
2016年学校安全教育月活动总结
2016/04/06 职场文书
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript