js绑定事件和解绑事件


Posted in Javascript onApril 27, 2017

在js中绑定多个事件用到的是两个方法:attachEvent和addEventListener,但是这两个方法又存在差异性

attachEvent方法  只支持IE678,不兼容其他浏览器

addEventListener方法   兼容火狐谷歌,不兼容IE8及以下

addEventListener方法

div.addEventListener('click',fn);

div.addEventListener('click',fn2);
function fn(){ console.log("春雨绵绵"); }

function fn2(){
        console.log("到处潮湿");
      }

attachEvent方法

div.attachEvent('onclick',fn);
div.attachEvent('onclick',fn2);
function fn(){ console.log("春雨绵绵"); }
function fn2(){
        console.log("到处潮湿");
      }

注意点:attachEvent方法绑定的事件是带on的,addEventListener绑定的事件是不带on的

下面我写了一个兼容了IE和火狐谷歌的方法

var div=document.getElementsByTagName("div")[0];
      addEvent('click',div,fn)
      function addEvent(str,ele,fn){
        ele.attachEvent?ele.attachEvent('on'+str,fn):ele.addEventListener(str,fn);
      }
      function fn(){
        console.log("春雨绵绵");
      }

这样就完美的解决了兼容性的问题

有绑定事件的话,那就肯定有解绑事件,但是解绑事件和绑定事件一样,万恶的IE还是会搞特殊化

detachEvent方法  只支持IE678,不兼容其他浏览器

removeEventListener方法   兼容火狐谷歌,不兼容IE8及以下

detachEvent方法写法:

ele.detachEvent("onclick",fn);

removeEventListener的写法:

ele.removeEventListener("click",fn);

下面我写了一个兼容性的方法给大家参考,实现也是很简单

function remove(str,ele,fn){
        ele.detachEvent?ele.detachEvent("on"+str,fn):ele.removeEventListener(str,fn);
      }

注意点:不管是绑定事件attachEvent还是删除事件detachEvent都是要加on的,removeEventListenser和addEventListenser则不需要加on

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木

Javascript 相关文章推荐
利用XMLHTTP传递参数在另一页面执行并刷新本页
Oct 26 Javascript
理解Javascript_03_javascript全局观
Oct 11 Javascript
用Javascript实现Windows任务管理器的代码
Mar 27 Javascript
css如何让浮动元素水平居中
Aug 07 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
Nov 23 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
Mar 06 Javascript
css和js实现弹出登录居中界面完整代码
Nov 26 Javascript
vue2.0 axios跨域并渲染的问题解决方法
Mar 08 Javascript
npm 更改默认全局路径以及国内镜像的方法
May 16 Javascript
Vue中添加滚动事件设置的方法详解
Sep 14 Javascript
node脚手架搭建服务器实现token验证的方法
Jan 20 Javascript
AJAX实现指定部分页面刷新效果
Oct 16 Javascript
详解ECMAScript6入门--Class对象
Apr 27 #Javascript
利用Vue v-model实现一个自定义的表单组件
Apr 27 #Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
Apr 26 #Javascript
微信小程序实现给循环列表添加点击样式实例
Apr 26 #Javascript
微信小程序 request接口的封装实例代码
Apr 26 #Javascript
微信小程序中hidden不生效原因的解决办法
Apr 26 #Javascript
微信小程序 flex实现导航实例详解
Apr 26 #Javascript
You might like
小谈php正则提取图片地址
2014/03/27 PHP
PHP入门经历和学习过程分享
2014/04/11 PHP
PHP6新特性分析
2016/03/03 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
JS 有趣的eval优化输入验证实例代码
2013/09/22 Javascript
js判断字符长度及中英文数字等
2014/03/19 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
AngularJS快速入门
2015/04/02 Javascript
javascript中使用正则表达式清理table样式的代码
2020/04/01 Javascript
封装好的javascript前端分页插件pagination
2016/01/04 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
微信小程序 开发经验整理
2017/02/15 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
Angularjs上传文件组件flowjs功能
2017/08/07 Javascript
JS实现简单表格排序操作示例
2017/10/07 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
解决vue elementUI中table里数字、字母、中文混合排序问题
2020/01/07 Javascript
JavaScript this指向相关原理及实例解析
2020/07/10 Javascript
python创建和删除目录的方法
2015/04/29 Python
Python列出一个文件夹及其子目录的所有文件
2016/06/30 Python
Python语言描述机器学习之Logistic回归算法
2017/12/21 Python
Python机器学习之SVM支持向量机
2017/12/27 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
Numpy与Pytorch 矩阵操作方式
2019/12/27 Python
size?瑞典:英国伦敦的球鞋精品店
2018/03/01 全球购物
FC-Moto美国:欧洲最大的摩托车服装和头盔商店之一
2019/08/24 全球购物
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
应届生自荐信范文
2014/02/21 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
道德模范事迹材料
2014/12/20 职场文书