<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> *{ margin: 0; padding: 0; } .father{ width: 300px; height: 300px; background: red; } .son{ width: 150px; height: 150px; background: blue; } </style> </head> <body> <div class="father"> <div class="son"></div> </div> <script type="text/javascript"> /* 1.事件的三个阶段 1.1.捕获阶段(从外向内的传递事件) 1.2.当前目标阶段 1.3.冒泡的阶段(从内向外的传递事件) 2.注意点: 三个阶段只有两个会被同时执行 要么捕获和当前, 要么当前和冒泡 3.为什么要么只能是捕获和当前, 要么只能是当前和冒泡? 这是JS处理事件的历史问题 早期各大浏览器厂商为占领市场, 以及对事件的理解不同 后续W3C为了兼容, 将两种方式都纳入标准 */ /* 1.如何设置事件到底是捕获还是冒泡? 通过addEventListener方法, 这个方法接收三个参数 第一个参数: 事件的名称 第二个参数: 回调函数 第三个参数: false冒泡 / true 捕获 注意点: onXxx的属性, 不接收任何参数, 所以默认就是冒泡 attachEvent方法, 只能接收两个参数, 所以默认就是冒泡 */ let oFDiv = document.querySelector(".father"); let oSDiv = document.querySelector(".son"); oFDiv.addEventListener("click",function() { console.log("father"); },true); oSDiv.addEventListener("click",function() { console.log("666"); },false); </script> </body> </html>
事件原理详解
关注
打赏