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

解決使用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

   //使用了全局?jǐn)?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)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲国产精品第一影院在线观看 | 99久久国产宗和精品1上映 | 国产精品一区二区AV交换 | 97SE亚洲国产综合自在线不卡 | 色哟哟网站入口在线观看视频 | 久久综合狠狠综合久久综合88 | 吃奶啃奶玩乳漫画 | 久久精品视频16 | 老师那里好大又粗h男男 | 亚洲精品乱码久久久久久中文字幕 | 国产成人高清视频 | 人与人特黄一级 | 成年人免费观看的视频 | 爱很烂qvod| 国产女合集第六部 | 国产AV精品一区二区三区漫画 | 六度影院最新 | 无码人妻丰满熟妇啪啪网不卡 | 久久99re8热在线播放 | 内射爽无广熟女亚洲 | 青青久久精品 | 嫩草伊人久久精品少妇AV网站 | 美女被j进去动态 | 宝贝你骚死哥了好爽 | 国产亚洲精品久久久久苍井松 | 有码 亚洲 制服 国产 在线 | 国产精品视频免费视频 | 老师真棒无遮瑕版漫画免费 | 成人免费看片又大又黄 | 国产成人精视频在线观看免费 | 色婷婷国产麻豆AV | 国产精品www视频免费看 | 99热在线免费播放 | 午夜福利视频极品国产83 | 好男人资源免费观看1 | 国产-第1页-浮力影院 | 亚洲青青草| 99视频国产在线 | 欧美熟妇互舔20p | np高h肉辣一女多男 no视频在线观看 | 新图解av吧|