EventTarget對象

EventTarget是一個由可以接受事件的對象實現(xiàn)的接口.并且可以為它們創(chuàng)建監(jiān)聽器.
element, document, window是常見的事件目標(biāo),但是其他對象也可以是事件對象(比如XMLHttpRequest).
需要事件目標(biāo)還支持通過on...屬性設(shè)置事件處理函數(shù).

EventTarget.addEventListener
EventTarget.removeEventListener
EventTarget.dispatchEvent

事件階段
當(dāng)一個DOM事件觸發(fā)時,它不是在觸發(fā)的對象上只觸發(fā)一次的, 而是經(jīng)歷三個階段.分別為

  1. 一開始從文檔的根節(jié)點流向目標(biāo)對象(捕獲階段).
  2. 然后在目標(biāo)對象上被觸發(fā)(目標(biāo)階段)
  3. 之后再回溯到文檔的根節(jié)點(冒泡階段)
demo.png

addEventListener 與事件的冒泡與捕獲
addEventListener的最后一個參數(shù),為true則代表使用事件捕獲模式,false則表示事件冒泡模式.(默認(rèn)為false: 冒泡模式)

阻止事件繼續(xù)冒泡
事件冒泡過程,是可以被阻止的.通過e.stopPropagation().

為什么會有事件冒泡與捕獲兩種模式?
事件流: 流本身含有方向的意思.
可以將dom節(jié)點看做許多個同心圓, 那么結(jié)構(gòu): window -> document -> html -> body -> div -> p可以看做半徑由大到小的一組同心圓,現(xiàn)在假如我們手指向圓心,那么是先執(zhí)行小圓所代表的事件呢,還是大圓所代表的事件呢?
由此衍生出兩種事件模式: 事件冒泡事件捕獲

EventTarget.removeEventListener

target.removeEventListener(type, listener[, useCapture])

type: 表示需要移除的事件類型.
listener: 需要移除的處理函數(shù).
userCapture: 指定需要移除的事件處理函數(shù)的類型(冒泡或捕獲), 默認(rèn)為false.

如果同一監(jiān)聽事件分別在冒泡階段和捕獲階段分別注冊了一次,則這兩次事件需要分別移除.兩者間互不干擾.
一個EventListener被移除以后,如果此事件正在執(zhí)行,則會立即停止.移除以后可以重新綁定.移除未綁定的EventListener不會起任何作用.

一個例子:

var div = document.querySelector('div')
var fn = function (e) {
  /* do something */
}
div.addEventListener('click', fn , false)
div.remoceEventListener('click', fn, false)

完整的代碼demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 以下文章為轉(zhuǎn)載,對理解JavaScript中的事件處理機(jī)制很有幫助,淺顯易懂,特分享于此。 什么是事件? 事件(E...
    jxyjxy閱讀 3,173評論 1 10
  • JavaScript 程序采用了異步事件驅(qū)動編程模型。在這種程序設(shè)計風(fēng)格下,當(dāng)文檔、瀏覽器、元素或與之相關(guān)的對象發(fā)...
    劼哥stone閱讀 1,333評論 3 11
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • 事件是一種異步編程的實現(xiàn)方式,本質(zhì)上是程序各個組成部分之間的通信。DOM支持大量的事件,本節(jié)介紹DOM的事件編程。...
    周花花啊閱讀 679評論 0 3
  • 我想成為我所希望的樣子,過上想要的生活。但是蛻變的這個過程到底需要多久?誰也不知道答案。 至于怎樣才能堅持下去,我...
    柴柴cc閱讀 1,312評論 0 0

友情鏈接更多精彩內(nèi)容