四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

解決使用attachEvent函數(shù)時,this指向被綁定的元素的問題的方法

使用attachEvent對同一事件進行多次綁定,這是解決事件函數(shù)定義沖突的重要方法。但是在IE中,函數(shù)內(nèi)的this指針并沒有指向被綁定元素,而是function對象,在應(yīng)用中,這是很難受的一件事,如果試圖用局部變量傳送元素,會因為閉包而引起內(nèi)存泄漏。那么,我們應(yīng)該如何解決這一難題呢?

   我給Function添加了原型方法“bindNode”,在這個方法里,根據(jù)傳送過來的元素,進行全局性存儲轉(zhuǎn)換,然后返回經(jīng)過封裝的函數(shù),使用call方法來進行屬主轉(zhuǎn)換。



<html>
<body>
<button id=btTest>test</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

   //使用了全局數(shù)組__bindNodes,通過局部變量iNodeItem進行跨函數(shù)傳值,如果直接傳送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(){

       //如果不經(jīng)過bindNode處理,下面的結(jié)果將是undefined
       alert(this.tagName)
   }.bindNode(bt))
   bt=null
}
</script>

JavaScript技術(shù)解決使用attachEvent函數(shù)時,this指向被綁定的元素的問題的方法,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 林采薇| 奇门遁甲免费讲解全集| 李子京| 我们的新时代演员表 | 去分母解一元一次方程100道及答案| 真的爱你最标准谐音歌词| 生死瞬间演员表| 电影网1905免费版| 郑丽身高一米几| 书剑恩仇录演员表| 瑜伽焰口全集 简体字| 性的视频| 《她的城》电视剧| 彼岸花电影| 塔木德全文阅读免费| 男同视频在线| 降糖操30分钟降血糖视频| 马可个人资料简介| 打男生军人光屁股的网站视频| angelina全集在线观看| stevenson| 《欢·爱》郭晓东| 风之谷钢琴谱| 母亲とが话しています免费| 大海在呼唤| 迷案1937电视剧剧情介绍| 高潮艺术| 西楚霸王| 暗潮危机电影完整版在线观看| 金靖演过的电视剧有哪些| 明日战记| 中长发图片2024最新款女| 永夜星河导演| 少爷爱上保镖泰剧双男主| 05s502图集| 常蓝天| 韩国成人网| 大奉打更人电视剧| 美女不穿衣服| 无限资源日本好片| 天狂传说之巴啦啦小魔仙合集 |