摘要:事件冒泡的事件流叫做事件冒泡。事件委托又稱(chēng)事件代理。對(duì)事件處理程序過(guò)多問(wèn)題的解決方案就是事件委托。所有用到按鈕的事件多數(shù)鼠標(biāo)和鍵盤(pán)事件都適合采用事件委托。
事件冒泡
IE的事件流叫做事件冒泡。顧名思義當(dāng)事件發(fā)生后,事件就開(kāi)始從里向外傳播,查看下方代碼:
Document
如果點(diǎn)擊頁(yè)面中的
click 事件 在 直系DOM 樹(shù)的每一級(jí)節(jié)點(diǎn)都會(huì)發(fā)生(自下而上),直到 document 對(duì)象。
事件委托又稱(chēng)事件代理。對(duì)“事件處理程序過(guò)多”問(wèn)題的解決方案就是事件委托。事件委托利用了事件冒泡,只指定一個(gè)父類(lèi)事件處理程序,就可以管理某一類(lèi)型的所有子類(lèi)元素事件。
三個(gè)
document.getElementById("sayHi").onClick(function(){...})
點(diǎn)擊事件不多的情況下還好,若是所有元素都采用這樣的方式,結(jié)果就會(huì)有數(shù)不清的代碼用于添加事件處理。就好比一萬(wàn)個(gè)人全擠到公司前臺(tái)去拿快遞,那場(chǎng)面,蔚為壯觀??!但是把快遞放到前臺(tái),前臺(tái)接收,然后分批次派送,就會(huì)舒服很多:
document.getElementById("myList").onClick(function(ev){ var e = ev || window.event; var target = e.target; switch (target.id) { case "goSth": ... break; case "doSth": ... break; ... } })
上面是用事件委托的方式,子元素是帶有事件效果的,我們可以發(fā)現(xiàn),當(dāng)用事件委托的時(shí)候,根本就不需要去遍歷元素的子節(jié)點(diǎn),只需要給父級(jí)元素添加事件就好了,子元素點(diǎn)擊,會(huì)通過(guò)以事件冒泡的方式激活父元素已添加的相同事件,減少了很多 js 對(duì)于 dom 的事件操作,占用更少的內(nèi)存,這大概是事件委托的精髓所在。
所有用到按鈕的事件(多數(shù)鼠標(biāo)和鍵盤(pán)事件)都適合采用事件委托。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/94920.html
摘要:見(jiàn)下圖更直觀在事件流中,事件的目標(biāo)在捕獲階段不會(huì)接受到事件,這意味著在捕獲階段,事件從到后就停止了。下一個(gè)階段是目標(biāo)階段,于是事件在上發(fā)生,并在事件處理中被看成是冒泡階段的一部分,然后,冒泡階段發(fā)生,事件又傳回。 CONTENTS DOM事件流 事件冒泡 阻止冒泡 事件捕獲 事件委托 DOM事件流 1.什么是事件流? 事件流所描述的是從頁(yè)面中接受事件的順序 2.DOM事件流的三個(gè)階...
摘要:見(jiàn)下圖更直觀在事件流中,事件的目標(biāo)在捕獲階段不會(huì)接受到事件,這意味著在捕獲階段,事件從到后就停止了。下一個(gè)階段是目標(biāo)階段,于是事件在上發(fā)生,并在事件處理中被看成是冒泡階段的一部分,然后,冒泡階段發(fā)生,事件又傳回。 CONTENTS DOM事件流 事件冒泡 阻止冒泡 事件捕獲 事件委托 DOM事件流 1.什么是事件流? 事件流所描述的是從頁(yè)面中接受事件的順序 2.DOM事件流的三個(gè)階...
摘要:見(jiàn)下圖更直觀在事件流中,事件的目標(biāo)在捕獲階段不會(huì)接受到事件,這意味著在捕獲階段,事件從到后就停止了。下一個(gè)階段是目標(biāo)階段,于是事件在上發(fā)生,并在事件處理中被看成是冒泡階段的一部分,然后,冒泡階段發(fā)生,事件又傳回。 CONTENTS DOM事件流 事件冒泡 阻止冒泡 事件捕獲 事件委托 DOM事件流 1.什么是事件流? 事件流所描述的是從頁(yè)面中接受事件的順序 2.DOM事件流的三個(gè)階...
摘要:事件監(jiān)聽(tīng)函數(shù)標(biāo)準(zhǔn)的事件監(jiān)聽(tīng)函數(shù)如下上面的示例表示先獲得表示節(jié)點(diǎn)的對(duì)象,然后在這個(gè)對(duì)象上面添加了一個(gè)事件監(jiān)聽(tīng)器,當(dāng)監(jiān)聽(tīng)到事件發(fā)生時(shí),則調(diào)用回調(diào)函數(shù),即在控制臺(tái)輸出。 JavaScript 事件解讀 1. 事件基本概念 事件是指在文檔或者瀏覽器中發(fā)生的一些特定交互瞬間,比如打開(kāi)某一個(gè)網(wǎng)頁(yè),瀏覽器加載完成后會(huì)觸發(fā) load 事件,當(dāng)鼠標(biāo)懸浮于某一個(gè)元素上時(shí)會(huì)觸發(fā) hover 事件,當(dāng)鼠標(biāo)點(diǎn)擊...
摘要:最近在深入實(shí)踐中,遇到了一些問(wèn)題,比如我需要為動(dòng)態(tài)創(chuàng)建的元素綁定事件,那么普通的事件綁定就不行了,于是通過(guò)上網(wǎng)查資料了解到事件委托,因此想總結(jié)一下中的事件綁定與事件委托。事件冒泡認(rèn)為事件促發(fā)的最深層元素首先接收事件。 最近在深入實(shí)踐js中,遇到了一些問(wèn)題,比如我需要為動(dòng)態(tài)創(chuàng)建的DOM元素綁定事件,那么普通的事件綁定就不行了,于是通過(guò)上網(wǎng)查資料了解到事件委托,因此想總結(jié)一下js中的事件綁...
閱讀 774·2021-07-25 21:37
閱讀 3685·2019-08-30 15:55
閱讀 2604·2019-08-30 15:54
閱讀 1772·2019-08-30 15:44
閱讀 3153·2019-08-30 15:44
閱讀 887·2019-08-30 15:43
閱讀 1072·2019-08-29 15:36
閱讀 3074·2019-08-29 10:58