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 相关文章推荐
js 动态选中下拉框
Nov 26 Javascript
使用js检测浏览器的实现代码
May 14 Javascript
javascript中的原型链深入理解
Feb 24 Javascript
js中的getAttribute方法使用示例
Aug 01 Javascript
一览画面点击复选框后获取多个id值的方法
May 30 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
Jun 13 Javascript
angularJs中$http获取后台数据的实例讲解
Aug 08 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
Dec 13 Javascript
JS实现随机抽取三人
Nov 06 Javascript
vue中渲染对象中属性时显示未定义的解决
Jul 31 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
Aug 14 Javascript
jQuery实现朋友圈查看图片
Sep 11 jQuery
详解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
电脑硬件及电脑配置知识大全
2020/03/17 数码科技
德生PL330的评价与改造
2021/03/02 无线电
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
JavaScript入门教程 Cookies
2009/01/31 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
javascript打印输出json实例
2013/11/11 Javascript
js判断IE浏览器版本过低示例代码
2013/11/22 Javascript
JavaScript遍历table表格中的某行某列并打印其值
2014/07/08 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
2016/11/10 Javascript
jquery.cookie.js的介绍与使用方法
2017/02/09 Javascript
js实现3D图片展示效果
2017/03/09 Javascript
Vue项目中使用Vux的安装过程
2018/05/01 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
怎样在vue项目下添加ESLint的方法
2019/05/16 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
layui use 定义js外部引用函数的方法
2019/09/26 Javascript
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
Python日期的加减等操作的示例
2017/08/15 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
Python中单线程、多线程和多进程的效率对比实验实例
2019/05/14 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
利用python为PostgreSQL的表自动添加分区
2021/01/18 Python
如何启动时不需输入用户名与密码
2014/05/09 面试题
测绘工程本科生求职信
2013/10/10 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
工程安全生产协议书
2014/11/21 职场文书
党的群众路线教育实践活动先进个人材料
2014/12/24 职场文书
行政诉讼答辩状
2015/05/21 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
python实现MD5进行文件去重的示例代码
2021/07/09 Python