事件的默认传播机制:
捕获阶段:从外向里依次查找元素
目标阶段:从当前事件源本身的操作
冒泡阶段:从内到外依次触发相关的行为(我们最常用的就是冒泡阶段)
具体见下图:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> #outer{ margin:20px auto; padding:20px; 300px; height:300px; background:#008000; } #inner{ padding:20px; 200px; height:200px; background:blue; } #center{ padding:20px; 100px; height:100px; background:yellow; } </style> </head> <body> <div id='outer'> <div id='inner'> <div id='center'></div> </div> </div> <script> var outer = document.getElementById('outer'),inner = document.getElementById('inner'),center = document.getElementById('center'); //使用DOM0级事件绑定给元素的某一个行为绑定的方法,都是在行为触发后的冒泡阶段把方法执行的 document.body.onclick = function(){ console.log('body') } outer.onclick = function(){ console.log('outer') } inner.onclick = function(){ console.log('inner') } center.onclick = function(){ console.log('center') } //addEventListener 第一个参数是行为的类型 第二个参数是给当前的行为定义的方法 第三个参数是控制在哪个阶段发生:true 在捕获阶段发生 false在冒泡阶段发生 document.body.addEventListener('click',function(){ console.log('body') },false) outer.addEventListener('click',function(){ console.log('outer') },true) inner.addEventListener('click',function(){ console.log('inner') },false) //输出 outer inner body </script> </body> </html>