日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

使用事件委托降低重复的事件绑定,从而降低dom操作的对性能的消耗[兼容IE版]

發(fā)布時(shí)間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用事件委托降低重复的事件绑定,从而降低dom操作的对性能的消耗[兼容IE版] 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用事件委托降低重復(fù)的事件綁定,從而降低dom操作的對(duì)性能的消耗[兼容IE版]

原理:

W3C將DOM2.0模型中事件處理流程分為三個(gè)階段:

一、事件捕獲階段:

當(dāng)某個(gè)元素觸發(fā)某個(gè)事件(如onclick),頂層對(duì)象document就會(huì)發(fā)出一個(gè)事件流,隨著DOM樹(shù)的節(jié)點(diǎn)向目標(biāo)元素節(jié)點(diǎn)流去,直到到達(dá)事件真正發(fā)

生的目標(biāo)元素。在這個(gè)過(guò)程中,事件相應(yīng)的監(jiān)聽(tīng)函數(shù)是不會(huì)被觸發(fā)的。

二、事件目標(biāo)階段:

當(dāng)?shù)竭_(dá)目標(biāo)元素之后,執(zhí)行目標(biāo)元素該事件相應(yīng)的處理函數(shù)。如果沒(méi)有綁定監(jiān)聽(tīng)函數(shù),那就不執(zhí)行。

三、事件起泡階段:

事件起泡:從目標(biāo)元素開(kāi)始,往頂層元素傳播。途中如果有節(jié)點(diǎn)綁定了相應(yīng)的事件處理函數(shù),這些函數(shù)都會(huì)被一次觸發(fā)。

IE及Opera(老版本的Opera)下,是不支持事件捕獲的()。而這個(gè)特點(diǎn)最明顯體現(xiàn)在事件綁定函數(shù)上。


demo:使用事件委托實(shí)現(xiàn)點(diǎn)擊li標(biāo)簽打印對(duì)應(yīng)li的innerText,兼容IE

dom結(jié)構(gòu):

<body><ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul> </body>

JavaScript:

// 兼容IE寫(xiě)法var ulElement = document.getElementsByTagName('ul')[0];if (ulElement.addEventListener) {ulElement.addEventListener('click', function (e) {if (e.target.nodeName.toLowerCase() == 'li') {console.log(e.target.innerText);}}, false)// false 表示在事件第三階段(冒泡)觸發(fā),true表示在事件第一階段(捕獲)觸發(fā)。} else {// 兼容IE瀏覽器,需要注意的點(diǎn)有attachEvent, onclick, srcElementulElement.attachEvent('onclick', function (e) {//IE沒(méi)有e.target,有e.srcElementvar target = e.srcElement;if (target.nodeName.toLowerCase() == 'li') {console.log('IE下---' +target.nodeName.innerText);}})}
擴(kuò)展:

阻止事件冒泡:e.stopPropagation() ||e.cancelBubble = true(后者適用IE,true為阻止冒泡)

阻止默認(rèn)事件:e.preventDefault() || e.returnValue = false (后者適用IE,false為阻止默認(rèn)事件)



總結(jié)

以上是生活随笔為你收集整理的使用事件委托降低重复的事件绑定,从而降低dom操作的对性能的消耗[兼容IE版]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。