浅谈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 相关文章推荐
一些常用的JS功能函数代码
Jun 23 Javascript
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
Aug 03 Javascript
用jQuery模拟页面加载进度条的实现代码
Dec 19 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
Jun 17 Javascript
Google (Local) Search API的简单使用介绍
Nov 28 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
Sep 14 Javascript
javascript中Number的方法小结
Nov 21 Javascript
Jquery Easyui表单组件Form使用详解(30)
Dec 19 Javascript
微信小程序 本地图片按照屏幕尺寸处理
Aug 04 Javascript
Vue实现一个图片懒加载插件
Mar 11 Javascript
vue下载excel的实现代码后台用post方法
May 10 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
Jun 06 jQuery
微信小程序 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
解析argc argv在php中的应用
2013/06/24 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
2014/04/24 PHP
PHP模糊查询的实现方法(推荐)
2016/09/06 PHP
jquery实用代码片段集合
2010/08/12 Javascript
jQuery Clone Bug解决代码
2010/12/22 Javascript
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
修改好的jquery滚动字幕效果实现代码
2011/06/22 Javascript
详解vue 中使用 AJAX获取数据的方法
2017/01/18 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
微信小程序的生命周期的详解
2017/10/19 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
妙用缓存调用链实现JS方法的重载
2018/04/30 Javascript
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
echarts多条折线图动态分层的实现方法
2019/05/24 Javascript
[50:02]完美世界DOTA2联赛循环赛 Magma vs IO BO2第一场 11.01
2020/11/02 DOTA
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
Python子类继承父类构造函数详解
2019/02/19 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
软件测试面试题
2015/10/21 面试题
销售内勤岗位职责
2014/04/15 职场文书
中学生民族团结演讲稿
2014/08/27 职场文书
地理信息科学专业推荐信
2014/09/08 职场文书
网络管理员岗位职责
2015/02/12 职场文书
教师节寄语2015
2015/03/23 职场文书
2016年五四青年节校园广播稿
2015/12/17 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书
Vue操作Storage本地化存储
2022/04/29 Vue.js