关于JavaScript的事件绑定

来源:互联网 发布:汽车导航不用网络吗 编辑:程序博客网 时间:2024/05/22 09:56
【IE方式】
–attachEvent(事件名称, 函数),绑定事件处理函数
–detachEvent(事件名称, 函数),解除绑定
【DOM方式】
–addEventListener(事件名称,函数, 捕获)
–removeEventListener(事件名称, 函数, 捕获)
//事件绑定函数封装function myAddEvent(obj,sEvent,fn){if(obj.attachEvent){ //IEobj.attachEvent("on"+sEvent,fn);}else{ //非IEobj.addEventListener(sEvent,fn,false);}}//事件绑定DEMO<script type="text/javascript">function aaa(){alert("aaa");}function bbb(){alert("bbb");}function myAddEvent(obj,sEvent,fn){if(obj.attachEvent){ //IEobj.attachEvent("on"+sEvent,fn);}else{ //非IEobj.addEventListener(sEvent,fn,false);}}window.onload = function(){var oBtn = document.getElementById("btn");myAddEvent(oBtn,'click',aaa);myAddEvent(oBtn,'click',bbb);}</script>//注意:绑定匿名函数,会无法删除(detachEvent)【如下DEMO】<script type="text/javascript">window.onload=function (){var oBtn=document.getElementById('btn1');oBtn.attachEvent('onclick', function (){alert('a');});oBtn.detachEvent('onclick', function (){alert('a');//即使解除也会弹出});};</script>//解:因为匿名函数function(){alert("a")}的原型是new function('alert("a")');它是重新new出来的方法,所以它们是两个不同的东西,不可能相等。比如双胞胎,虽然长得一样,但是他们不是同一个人。【如下DEMO】<script type="text/javascript">var a = function (){alert('a');};var b = function (){alert('a');};alert(a==b); //结果为false</script>//所以上面(detachEvent)解除的匿名函数不是前面(attachEvent)里的那一个匿名函数,故解除失效。

0 0
原创粉丝点击