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 相关文章推荐
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
Sep 10 Javascript
qq悬浮代码(兼容各个浏览器)
Jan 29 Javascript
浅谈JavaScript函数节流
Dec 09 Javascript
JavaScript表单验证实例之验证表单项是否为空
Jan 10 Javascript
浅谈JavaScript异步编程
Jan 20 Javascript
JS中传递参数的几种不同方法比较
Jan 20 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
Apr 17 jQuery
详解node.js的http模块实例演示
Jul 12 Javascript
vue.js父子组件通信动态绑定的实例
Sep 28 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
Nov 06 Javascript
微信小程序事件流原理解析
Nov 27 Javascript
AutoJs实现刷宝短视频的思路详解
May 22 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
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
PHP的PDO大对象(LOBs)
2019/01/27 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
flash 得到自身url参数的代码
2009/11/15 Javascript
javascript parseInt与Number函数的区别
2010/01/21 Javascript
js对象数组按属性快速排序
2011/01/31 Javascript
jQuery 源码分析笔记(2) 变量列表
2011/05/28 Javascript
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
javascript数组去重方法汇总
2015/04/23 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
JS实现设置ff与ie元素绝对位置的方法
2016/03/08 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
Vue表单及表单绑定方法
2018/09/04 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
jQuery实现动态添加和删除input框代码实例
2019/03/29 jQuery
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
Python实现获取系统临时目录及临时文件的方法示例
2019/06/26 Python
Python中断多重循环的几种方式详解
2020/02/10 Python
什么是python的函数体
2020/06/19 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
办理护照介绍信
2014/01/16 职场文书
人事部专员岗位职责
2014/03/04 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
新教师教学工作总结
2015/08/14 职场文书