关于JavaScript 三种绑定事件方式之间的区别以及对应的解绑(整理)

前言:最近整理电脑里的文档,当时写的比较乱,现在再看一遍有了更好的理解,随着jQuery和其他框架的大量应用,好多原生的基础的内容都记忆错乱了,整理电脑的机会也把以往的知识整理一下,自己以后可以看也可以给一些初学的在这些知识点上有混淆的人一些帮助。总结不准确的地方欢迎指出。

JavaScript三种绑定事件的方式(在绑定多个事件时才显示区别):

1. //直接在DOM里绑定事件(执行前面一个)

<div id="btn" οnclick="clickone()" οnclick="clicktwo()"></div> 

<script>

function clickone(){ alert("hello"); } //执行这

function clicktwo(){ alert("world!"); }

</script>

2.  //脚本里面绑定(执行后面一个)

<div id="btn"></div>

<script>

document.getElementById("btn").onclick = function(){ alert("hello"); }

document.getElementById("btn").onclick = function(){ alert("world"); } //执行这个

</script>

3.//通过侦听事件处理相应的函数(按顺序执行)

<div id="btn"></div>

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

<script>

document.getElementById("btn").addEventListener("click",clickone,false);//是否捕捉,一般都是false

function clickone(){ alert("hello"); } //先执行

document.getElementById("btn").addEventListener("click",clicktwo,false);//是否捕捉,一般都是false

function clicktwo(){ alert("world"); } //后执行

</script>

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

<script>

document.getElementById("btn").attachEvent("onclick",clickone);

function clickone(){ alert("hello"); } //先执行

document.getElementById("btn").attachEvent("onclick",clicktwo);

function clicktwo(){ alert("world"); } //后执行

</script>

解决办法(兼容不同浏览器):

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("春雨绵绵");

       }

对应解绑:

①removeEventListener方法   兼容火狐谷歌,不兼容IE8及以下(addEventListener)

ele.removeEventListener("click",fn);

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

ele.detachEvent("onclick",fn);

解决办法(兼容不同浏览器):

function remove(str,ele,fn){       

  ele.detachEvent?ele.detachEvent("on"+str,fn):ele.removeEventListener(str,fn);      

 }

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值