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 相关文章推荐
javaScript 关闭浏览器 (不弹出提示框)
Jan 31 Javascript
Jquery优化效率 提升性能解决方案
Sep 06 Javascript
Javascript 中 null、NaN和undefined的区别总结
Apr 10 Javascript
javascript检查浏览器是否支持flash的实现代码
Aug 14 Javascript
在JavaScript中使用开平方根的sqrt()方法
Jun 15 Javascript
javascript关于继承解析
May 10 Javascript
jQuery基于$.ajax设置移动端click超时处理方法
May 14 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
Dec 07 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
Jul 21 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
Aug 03 Javascript
JavaScript之Blob对象类型的具体使用方法
Nov 29 Javascript
vue基于better-scroll仿京东分类列表
Jun 30 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
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
用PHP实现小型站点广告管理
2006/10/09 PHP
深入PHP数据加密详解
2013/06/18 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
php使用include 和require引入文件的区别
2017/02/16 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
2018/09/29 PHP
Prototype使用指南之dom.js
2007/01/10 Javascript
不要小看注释掉的JS 引起的安全问题
2008/12/27 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
2018/03/23 Javascript
React 组件间的通信示例
2018/06/14 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
2020/08/21 Javascript
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
2019/01/30 Javascript
详解VUE项目中安装和使用vant组件
2019/04/28 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
2020/04/04 jQuery
JavaScript实现动态生成表格
2020/08/02 Javascript
React中使用Vditor自定义图片详解
2020/12/25 Javascript
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
办公室驾驶员岗位职责
2013/11/15 职场文书
八年级英语教学反思
2014/01/09 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
交警作风整顿剖析材料
2014/10/11 职场文书
我是特种兵观后感
2015/06/11 职场文书
生日宴会祝酒词
2015/08/10 职场文书
聘用合同范本
2015/09/21 职场文书