JavaScript中有一個比較火的技術叫事件委託
點擊上方藍字關注「小鄭搞碼事」,每天都能學到知識,搞懂一個問題!
前端在面試的時候,有可能就會問到「事件委託」這麼一個概念,不要慌,關於事件委託大家可能聽的少,覺得這個問題問的很正經,但是,只要你是做前端的,你一定用過事件委託,至少在你碰到的需求中你應該用了。
這篇,我們從兩個方面來搞懂它,1、概念(什麼是事件委託)。2、好處(事件委託到底給我們帶來哪些好處)
一、關於「事件委託」的概念:
委託:從字面上來理解,就是讓別人來做,而事件就是通常我們用的點擊,移入、移出等事件。總的來說,就是利用冒泡的原理,把子元素上的事件加在父元素上,觸發其執行。
什麼個意思了,下面我舉一個非常清晰的例子來演示一下:
下面是這個例子的DOM結構:
假如我們要給這個UL中的所有子元素LI加個點擊事件(或者給一個DIV中的某些特定的CLASS值子元素綁定事件),不需要將子元素循環(for)來綁定事件,只需要將這個事件綁定在它們的父元素上就行,像下面這樣子:
其中用e.target.nodeName來排除非LI的子元素。這就是事件委託。
二、關於「事件委託」的好處:
事件委託帶來的很明顯的好處至少有這三個:
1、提高性能
如果有很多個子元素需要使用for循環來綁定事件的話,那麼這樣的處理方式是比較影響性能的。然而,使用事件委託的方式,HTML不變,將事件只綁定在它們的父元素上就行,這個性能的優化是很明顯的。
2、動態添加的子元素也會綁定之前的事件
這個很好理解,如果使用for循環來給子元素添加綁定事件,然後,在添加一個子元素,這個新添加的子元素是不會綁定事件的,因為它沒有在之前的循環內。
但是使用事件委託,將事件綁定在它們的父元素上,相當於對它的所有子元素都綁定了這個事件。即使在添加一個子元素,它也會綁定這個事件(無需重新綁定)。
3、代碼變的好維護
相對來說,代碼變的更加清晰,所有子元素,只需要初始化時綁定一次,之後不管是新增子元素都無需再在元素上綁定事件。
三、寫在最後的總結:
關於事件委託,像jQuery等一些庫都有封裝好的方法,可以拿來即用,非常方便,本篇主要是和大家交流一下什麼事件委託及好處。
以上純屬小鄭子個人理解,如有不對可以留言交流,謝謝!
※H5-這篇告訴你什麼是最佳適配方案
※理解clip屬性及用它如何實現圖片載入環形loading效果
※用一個bug搞懂什麼是JavaScript函數節流
※H5-如何在項目中正確應用rem
※教你在項目中如何保存用戶狀態
TAG:小鄭搞碼事 |
※Adidas的編織技術,還是只有 Primeknit 嗎?
※在 Scale Up 中使用 Health Check-每天5分鐘玩轉 Docker 容器技術
※Grapeshot COO Kurt Kratchman:除了技術過硬,我們還注重融合和傳播
※iphone沒有的屏下指紋技術,vivo做到了!vivo X20Plus新款發布
※Valve改進Steam音頻 增加AMD的TrueAudio Next技術
※AMD 3D音頻技術TrueAudio Next中的CU Reservation是什麼
※AMD 3D音頻技術TrueAudio Next中的CU Reservation是什麼?
※頂尖架構師能從Google、Facebook、Netflix等公司學到哪些技術?
※Sandiflux:另一個使用Fastflux技術的殭屍網路已經出現
※谷歌發布Welcome to Light Fields,帶領大家體驗光場技術
※前Google、Apple、Stanford的頂級地圖專家加盟,DeepMap公布了一個超豪華的技術顧問委員會陣容
※Apache Struts某漏洞曝光一年後仍有「餘威」;hashgraph:區塊鏈技術的最新競爭者
※淺談 Material Design iCourt技術
※微軟的Haptic Links將VR技術帶入一個新的境界
※Surgical Theater技術提供大腦VR視圖
※Oculus專家將在Display Week上探討下一代VR/AR顯示技術
※全球匯款公司Western Union測試Ripple技術
※Stratasys合作夥伴利用J750和HP Multi Jet Fusion 3D列印技術
※技術小白如何利用 Coding Pages 搭建免費的WordPress站點
※CreativeDrive收購CGI增強現實和沉浸式內容技術初創公司Decora