JavaScript事件委托技術(shù)實(shí)例分析
本文實(shí)例分析了JavaScript事件委托技術(shù)。分享給大家供大家參考。具體分析如下:
如果一個(gè)整體頁(yè)面里有大量的按鈕.我們就要為每一個(gè)按鈕綁定事件處理程序.這樣就會(huì)影響性能了.
首先每個(gè)函數(shù)都是對(duì)象,對(duì)象就會(huì)占用很多內(nèi)存.內(nèi)存中的對(duì)象越多,性能就越差.
其次,dom訪問(wèn)次數(shù)增多,就會(huì)導(dǎo)致延遲加載頁(yè)面.事實(shí)上,從如何來(lái)利用好事件處理程序,還是有很好的解決方案的.
事件委托:
對(duì)事件處理程序過(guò)多的問(wèn)題解決的方案就是事件委托技術(shù).
事件委托技術(shù)利用了事件冒泡.只需指定一個(gè)事件處理程序.
我們可以為某個(gè)需要觸發(fā)事件的父元素來(lái)綁定事件處理程序.
<ul id="mylist"> <li id="li_1">sdsdsd</li> <li id="li_2">sdsdsd</li> <li id="li_3">sdsdsd</li> </ul>
現(xiàn)在我們要為這3個(gè)li綁定事件處理程序..
只需要在ul綁定事件處理程序.
obj.eventHandler($("mylist"),"click",function(e){ e = e || window.event; switch(e.target.id){ //大家應(yīng)該還記得target是事件目標(biāo), //只要點(diǎn)擊了事件的目標(biāo)元素就會(huì)彈出相應(yīng)的alert. case "li_1": alert("li_1"); break; case "li_2": alert("li_2"); break; case "li_3": alert("li_3"); break } })
如果在一個(gè)復(fù)雜的web應(yīng)用程序中,.這種事件委托是非常實(shí)用的.
如果不采用這種方式的話,一個(gè)一個(gè)去綁定那就是數(shù)不清的事件處理程序.
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
相關(guān)文章
漂亮的widgets,支持換膚和后期開(kāi)發(fā)新皮膚
漂亮的widgets,支持換膚和后期開(kāi)發(fā)新皮膚...2007-04-04基于JavaScript實(shí)現(xiàn)數(shù)值型坐標(biāo)軸刻度計(jì)算算法(echarts的y軸刻度計(jì)算)
這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)數(shù)值型坐標(biāo)軸刻度計(jì)算算法(echarts的y軸刻度計(jì)算),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,感興趣的朋友可以參考與一下2022-06-06javaScript遍歷對(duì)象和數(shù)組的方法總結(jié)
這篇文章介紹了javaScript遍歷對(duì)象和數(shù)組的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06JavaScript通過(guò)filereader接口讀取文件
這篇文章主要為大家詳細(xì)介紹了通過(guò)filereader接口讀取文件,使用readAsDataURL方法預(yù)覽圖片的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05JavaScript實(shí)現(xiàn)點(diǎn)擊切換功能
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)點(diǎn)擊切換功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01