解决使用attachEvent函数时this指向被绑定的元素的问题的方法

微笑的遗留

微笑的遗留

2016-02-19 09:22

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的解决使用attachEvent函数时this指向被绑定的元素的问题的方法教程,一起来看看吧!超容易上手~
使用attachEvent对同一事件进行多次绑定,这是解决事件函数定义冲突的重要方法。但是在IE中,函数内的this指针并没有指向被绑定元素,而是function对象,在应用中,这是很难受的一件事,如果试图用局部变量传送元素,会因为闭包而引起内存泄漏。那么,我们应该如何解决这一难题呢?

   我给Function添加了原型方法“bindNode”,在这个方法里,根据传送过来的元素,进行全局性存储转换,然后返回经过封装的函数,使用call方法来进行属主转换。



html
body
button id=btTesttest/button
/body
/html
script
if(!document.all){
   HTMLElement.prototype.attachEvent=function(sType,foo){
       this.addEventListener(sType.slice(2),foo,false)
   }
}
Function.prototype.bindNode=function(oNode){
   var foo=this,iNodeItem

   //使用了全局数组__bindNodes,通过局部变量iNodeItem进行跨函数传值,如果直接传送oNode,也将造成闭包
   if(window.__bindNodes==null)
       __bindNodes=[]
   __bindNodes.push(oNode)
   iNodeItem=__bindNodes.length-1
   oNode=null
   return function(e){
       foo.call(__bindNodes[iNodeItem],e||event)
   }
}
abc()
function abc(){
   var bt=document.getElementById("btTest")
   bt.attachEvent("onclick",function(){

       //如果不经过bindNode处理,下面的结果将是undefined
       alert(this.tagName)
   }.bindNode(bt))
   bt=null
}
/script
展开更多 50%)
分享

猜你喜欢

解决使用attachEvent函数时this指向被绑定的元素的问题的方法

Web开发
解决使用attachEvent函数时this指向被绑定的元素的问题的方法

如何解决attachEvent函数时this指向被绑定的元素的问题?

Web开发
如何解决attachEvent函数时this指向被绑定的元素的问题?

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在JavaScript中使用inline函数的问题

Web开发
在JavaScript中使用inline函数的问题

解决失眠问题的方法

健康常识 健康生活 生活小常识 生活小窍门
解决失眠问题的方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

使用ftp时出现Socket ERROR的解决方法

电脑入门
使用ftp时出现Socket ERROR的解决方法

JQuery 绑定事件时传递参数的实现方法

Web开发
JQuery 绑定事件时传递参数的实现方法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

ProC 连接Oracle代码

ProC 连接Oracle代码

使用jquery 的ajax调用总是错误亲测的解决方法

使用jquery 的ajax调用总是错误亲测的解决方法
下拉加载更多内容 ↓