網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
<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>
// 獲取三個(gè)div,用于后續(xù)對(duì)div進(jìn)行dom操作,主要針對(duì)事件。注意這三個(gè)div是有層級(jí)關(guān)系的。
var div1 = document.querySelector(".div1");
var div2 = document.querySelector(".div2");
var div3 = document.querySelector(".div3");
var div4 = document.querySelector(".div4");
// 給每個(gè)div都添加監(jiān)聽(tīng)事件。嘗試著捕獲階段
// 事件監(jiān)聽(tīng)第三個(gè)參數(shù)默認(rèn)不寫為冒泡階段攔截,
// 如果為true,則為捕獲截?cái)鄶r截。
// 如果為false,則為冒泡截?cái)鄶r截。false是默認(rèn)值。
div1.addEventListener("click", clickhandler1);
div2.addEventListener("click", clickhandler2, true);
div3.addEventListener("click", clickhandler3, true);
div4.addEventListener("click", clickhandler4, true);
//當(dāng)調(diào)用這個(gè)函數(shù)時(shí),打印對(duì)應(yīng)的字符串
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.點(diǎn)擊誰(shuí),誰(shuí)就是目標(biāo)
。每一次都是先從捕獲階段->目標(biāo)->冒泡階段
考慮。如果中間達(dá)不到目標(biāo),那么后面就失敗,不去執(zhí)行
。
例子1
1是冒泡,2,3,4是捕獲。
在3截?cái)?點(diǎn)擊4:
分析:
1).4是目標(biāo),所以1->2->3->4
。
2).3是阻斷,3是捕獲階段阻斷,所以阻斷的是3的捕獲截?cái)唷?br> 3).所以點(diǎn)擊4,只能從1->2->3
,進(jìn)入不了4,然后后面的失敗。捕獲2和3.
例子2
2和4是捕獲,1和3是冒泡。阻斷3,點(diǎn)擊4:
1).4是目標(biāo),所以從1,2,3,4進(jìn)入。
2).在3處截?cái)啵?是冒泡,所以阻止3冒泡。所以1->2->3->4->3.
3).先輸出捕獲的,再輸出冒泡的。
輸出2,4,3
.
原文鏈接:https://blog.csdn.net/u010563350/article/details/122093814
相關(guān)推薦
- 2022-03-30 python批量修改xml文件中的信息_python
- 2022-10-12 詳解C++異常處理機(jī)制示例介紹_C 語(yǔ)言
- 2022-05-13 UnicodeEncodeError: ‘utf-8‘ codec can‘t encode cha
- 2022-05-28 使用Docker部署ASP.NET?Core程序_基礎(chǔ)應(yīng)用
- 2022-11-06 Django中Migrate和Makemigrations實(shí)操詳解_python
- 2022-04-14 Python實(shí)現(xiàn)用戶注冊(cè)登錄程序_python
- 2022-12-13 C++實(shí)現(xiàn)一個(gè)簡(jiǎn)易版的事件(Event)的示例代碼_C 語(yǔ)言
- 2022-12-02 Android?使用?okhttp3和retrofit2?進(jìn)行單文件和多文件上傳_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支