延续昨天的事件监听,一开始花了满多时间在认识各个事件的使用方式,特别在後续专案实作上,认识更多的执行方式。不过对於基础观念不花费心力来理解它,永远就是会弄不清楚,其中冒泡事件就是其中之一,从刚开始进入 JS 实作时,总是会不太清楚为什麽这里要下 event.stopPropagation()
,总以为是必须要写上的,直到学习到冒泡事件 (Event Bubbling)才知道用意啊~
ul
> li
的列表来介绍绑定监听事件,并以情况说明会发生什麽问题,该如何「捕获」或「冒泡」特性来修正,藉此也可以深刻记得未来在做类似的功能时,要注意哪些地方。var button = document.querySelector('.btn');
button.addEventListener('click',function(e){
alert('Hello this is button');
},false)
<td>
。<td>
被点击时,事件会冒泡往上执行。box-3 is clicked
box-1 is clicked!
<div id="box-1">
<h2>box-1</h2>
<div id="box-2">
<h2>box-2</h2>
<div id="box-3">
<h2>box-3</h2>
</div>
</div>
</div>
<script>
$(function () {
// 点击3时,2也会触发(这就是冒泡事件的特性),所以必须要停止冒泡行为,否则它会一直往上触发。
//他的顺序是固定的3->2->1,从最里面开始
$('#box-3').click(function () {
console.log("box-3 is clicked!");
});
$('#box-2').click(function () {
console.log("box-2 is clicked!");
})
$('#box-1').click(function () {
console.log("box-1 is clicked!");
})
})
</script>
e.stopPropagation()
#box-3
,并设定阻止冒泡的行为发生,就可以发现他只会出现 box-3 is clicked! $('#box-3').click(function (event) {
//阻止冒泡的行为发生
event.stopPropagation();
console.log("box-3 is clicked!");
});
参考资料:
[第七周] DOM - 事件传递机制:捕获与冒泡、事件代理
重新认识 JavaScript: Day 14 事件机制的原理
DOM 的事件传递机制:捕获与冒泡
<<: Day03 - Amazon ECS Anywhere 基础说明与建置(上)
ASP.NET网页切换导向及状态管理-趴水 今天来做做看 在网页输入资料後 按下按钮 可以将资料导向...
专业主义 担当责任 技术为本 团队精神 ...
那今天主要是让读者知道 Rust 有哪些套件 该从哪里下手 我尽量把我知道的都写出来 网页前端 WA...
前言 今天把昨天讲的论文做一个总结,明天就要开始介绍attention了 A2D dataset 这...
您的订阅是我制作影片的动力 订阅点这里~ 影片程序码 ## k prototype #### lib...