1.事件的监听
elem.addEventListener('click事件类型',事件处理函数,true/false)
第三个参数为true,那么这个事件处理函数就是捕获阶段!!!
使用addEventListener绑定事件,一单事件产生会执行绑定在上面的所有的事件处理函数!
2.时间监听的删除
elem.removeEventListener('click时间类型',事件处理函数)
3.冒泡阶段
冒泡事件,当点击,这个事件会一直向上传递,执行每一个事件函数,直到html
3.事件流
第一阶段 捕获 捕获的过程是从上到下!!!document html body -- 捕获 你点击的谁就捕获谁!!! (capture)
第二阶段 目标阶段 查到了是谁点击
第三阶段 冒泡阶段!!! bubbling 再由目标阶段向上执行
执行过程 执行目标的所有带true的父级(捕获阶段)——>(捕获到目标阶段)
当处于目标阶段时。谁先注册了函数,谁先执行!!!看true 和false 那个在前执行那个->在进行冒泡阶段 执行false 向上执行
<!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>
.grandfater {
width: 400px;
height: 400px;
border:1px solid red;
}
.father {
width: 200px;
height: 200px;
border:1px solid red;
}
.son {
width: 100px;
height: 100px;
border:1px solid red;
}
</style>
</head>
<body>
<div class="grandfater">
<div class="father">
<div class="son"></div>
</div>
</div>
<script>
//第一阶段 捕获 捕获的过程是从上到下!!!document html body -- 捕获 你点击的谁就捕获谁!!! (capture)
//第二阶段 目标阶段 查到了是谁点击
//第三阶段 冒泡阶段!!! bubbling 再由目标阶段向上执行
//执行过程 执行目标的所有带true的父级(捕获阶段)——>(捕获到目标阶段)当处于目标阶段时。谁先注册了函数,谁先执行!!!看true 和false 那个在前执行那个->在进行冒泡阶段 执行false 向上执行
// 1.捕获阶段事件也可以进行绑定
var grandfater = document.querySelector(".grandfater")
var father = document.querySelector(".father")
var son = document.querySelector(".son")
// 第三个参数为true,那么这个事件处理函数就是捕获阶段!!!
grandfater.addEventListener("click", function() {
console.log("grandfather捕获")
}, true)
grandfater.addEventListener("click", function() {
console.log("grandfather冒泡")
}, false)
father.addEventListener("click", function() {
console.log("father捕获")
}, true)
father.addEventListener("click", function() {
console.log("father冒泡")
}, false)
// 当处于目标阶段时。谁先注册了函数,谁先执行!!!
son.addEventListener("click", function() {
console.log("son冒泡")
}, false)
son.addEventListener("click", function() {
console.log("son捕获")
}, true)
</script>
</body>
</html>