一、事件捕獲
捕獲型事件:事件從最不精確的對象(document 對象)開始觸發,而後到最精確(也能夠在窗口級別捕獲事件,不過必須由開發人員特別指定)css
二、事件冒泡
冒泡型事件:事件按照從最特定的事件目標到最不特定的事件目標(document對象)的順序觸發。html
爲了更好地體會,咱們如今寫一個demo,html 和 css 以下:瀏覽器
打開瀏覽器查看,效果以下:函數
接下來,我須要給它添加一些JS代碼:this
var d1 = document.getElementById("d1"); var d2 = document.getElementById("d2"); var d3 = document.getElementById("d3"); d1.addEventListener("click",function(){ this.style.background = "orange"; console.log(111); }) d2.addEventListener("click",function(){ this.style.background = "green"; console.log(222); }) d3.addEventListener("click",function(){ this.style.background = "blue"; console.log(333); })
如今,當咱們點擊最外層的圓d1時:spa
當咱們點擊中間的圓d2時:code
當咱們點擊最裏面的圓d3時:htm
【現象】:對象
如今,咱們給剛剛的 圓形d1 添加兩行JS代碼:blog
而後咱們按順序分別點擊圓 d1, d2, d3 , 看一下 this 和 event.target 在控制檯上分別打印的結果:
【結論】:
js中事件是會冒泡的,因此this不必定是直接接受事件的目標DOM,
但event.target不會變化,它永遠是直接接受事件的目標DOM元素;