浅谈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 EasyUI NumberBox(数字框)的用法
Jul 08 Javascript
网页中返回顶部代码(多种方法)另附注释说明
Apr 24 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
Aug 01 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
Oct 15 Javascript
js 自带的 map() 方法全面了解
Aug 16 Javascript
Boostrap基础教程之JavaScript插件篇
Sep 08 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
Dec 20 Javascript
浅谈JavaScript的innerWidth与innerHeight
Oct 12 Javascript
js技巧之十几行的代码实现vue.watch代码
Jun 09 Javascript
详谈js的变量提升以及使用方法
Oct 06 Javascript
微信小程序实现页面分享onShareAppMessage
Aug 12 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
Dec 04 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和XSS跨站攻击的防范
2007/04/17 PHP
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
PHP实现QQ空间自动回复说说的方法
2015/12/02 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
js实现简单鼠标跟随效果的方法
2015/04/10 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
jquery实现页面常用的返回顶部效果
2016/03/04 Javascript
jQuery Ajax 全局调用封装实例代码详解
2016/06/02 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
js 两数组去除重复数值的实例
2017/12/06 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
2019/04/02 Javascript
详解vue-cli3开发Chrome插件实践
2019/05/29 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
python打开文件并获取文件相关属性的方法
2015/04/23 Python
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
Python中一些不为人知的基础技巧总结
2018/05/19 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
django一对多模型以及如何在前端实现详解
2019/07/24 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
2013/01/09 HTML / CSS
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
上班上网检讨书
2014/01/29 职场文书
体育教学随笔感言
2014/02/24 职场文书
升学宴主持词
2014/04/02 职场文书
共筑中国梦演讲稿
2014/04/23 职场文书
北京申奥口号
2014/06/19 职场文书
服务明星事迹材料
2014/12/29 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书