一、事件捕获
捕获型事件:事件从最不精确的对象(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元素;