天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

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

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



<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

   //使用了全局數組__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>

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

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

主站蜘蛛池模板: 亚洲一级毛片免费在线观看 | 国产精品免费视频能看 | 国产午夜精品一区二区理论影院 | 极品 女神校花 露脸91 | 国产婷婷午夜无码A片 | 调教美丽的白丝袜麻麻视频 | 少妇的肉体AA片免费观看 | 在线 中文字幕 | 豆奶视频在线高清观看 | 男男高H啪肉Np文多攻多一受 | 免费国产综合视频在线看 | 欧美最猛12teevideos | 一本久道久久综合婷婷五月 | 伊人久久大香线蕉电影院 | 毛片免费观看 | 无码内射成人免费喷射 | 最新男同鸭子ktv | 性色爽爱性色爽爱网站 | 亚洲 自拍 偷拍 另类综合图区 | 高清 国产 在线 亚洲 | 乱码午夜-极品国产内射 | 欧美色妞AV重囗味视频 | 久久受www免费人成_看片中文 | 国产成人一区免费观看 | 久久热在线视频精品1 | 丝瓜涩涩屋黄瓜香蕉丝瓜 | 成人在线视频国产 | 538久久视频在线 | 收集最新中文国产中文字幕 | 久久久久综合一本久道 | 精品动漫国产亚洲AV在线观看 | X8X8拨牐拨牐X8免费视频8午夜 | 玖玖热视频一区二区人妻 | 永久adc视频年龄确认 | 亚洲色图19p | 性白俄罗斯高清xxxxx | 亚洲午夜精品AV无码少妇 | 久久九九日本韩国精品 | 亚洲一区二区三不卡高清 | 亚洲精品乱码久久久久久v 亚洲精品乱码电影在线观看 | 国产精品爽黄69天堂A片 |