網(wǎng)站首頁 編程語言 正文
<style>
.div1 {
width: 200px;
height: 200px;
background-color: bisque;
}
.div2 {
width: 100px;
height: 100px;
background-color: coral;
}
.div3 {
width: 50px;
height: 50px;
background-color: crimson;
}
.div4 {
width: 20px;
height: 20px;
background-color: purple;
}
div {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
}
</style>
</head>
<body>
<div class="div1">1
<div class="div2">2
<div class="div3">3
<div class="div4">4</div>
</div>
</div>
</div>
<script>
// 獲取三個div,用于后續(xù)對div進行dom操作,主要針對事件。注意這三個div是有層級關系的。
var div1 = document.querySelector(".div1");
var div2 = document.querySelector(".div2");
var div3 = document.querySelector(".div3");
var div4 = document.querySelector(".div4");
// 給每個div都添加監(jiān)聽事件。嘗試著捕獲階段
// 事件監(jiān)聽第三個參數(shù)默認不寫為冒泡階段攔截,
// 如果為true,則為捕獲截斷攔截。
// 如果為false,則為冒泡截斷攔截。false是默認值。
div1.addEventListener("click", clickhandler1);
div2.addEventListener("click", clickhandler2, true);
div3.addEventListener("click", clickhandler3, true);
div4.addEventListener("click", clickhandler4, true);
//當調用這個函數(shù)時,打印對應的字符串
function clickhandler1(e) {
console.log('1');
}
function clickhandler2(e) {
console.log('2');
}
function clickhandler3(e) {
console.log('3');
e.stopPropagation();
}
function clickhandler4(e) {
console.log('4');
}
</script>
1.如果stopPropagation方法給的元素是捕獲,那么阻止的就是捕獲。
否則,阻止的就是冒泡。
2.點擊誰,誰就是目標
。每一次都是先從捕獲階段->目標->冒泡階段
考慮。如果中間達不到目標,那么后面就失敗,不去執(zhí)行
。
例子1
1是冒泡,2,3,4是捕獲。
在3截斷,點擊4:
分析:
1).4是目標,所以1->2->3->4
。
2).3是阻斷,3是捕獲階段阻斷,所以阻斷的是3的捕獲截斷。
3).所以點擊4,只能從1->2->3
,進入不了4,然后后面的失敗。捕獲2和3.
例子2
2和4是捕獲,1和3是冒泡。阻斷3,點擊4:
1).4是目標,所以從1,2,3,4進入。
2).在3處截斷,3是冒泡,所以阻止3冒泡。所以1->2->3->4->3.
3).先輸出捕獲的,再輸出冒泡的。
輸出2,4,3
.
原文鏈接:https://blog.csdn.net/u010563350/article/details/122093814
相關推薦
- 2022-05-13 Headless Chrom自動化工具詳解
- 2022-11-05 Android?TabLayout?自定義樣式及使用詳解_Android
- 2022-10-19 react編寫可編輯標題示例詳解_React
- 2022-01-09 uview 使用scroll-view以及swiper 做tabs
- 2022-12-23 kotlin延遲初始化和密封類詳細講解_Android
- 2022-11-27 Rust語言中的String和HashMap使用示例詳解_Rust語言
- 2022-09-26 docker已啟動容器修改添加端口映射的兩種方法_docker
- 2022-01-19 webpack5 熱更新無響應
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支