Web前端之JavaScript事件捕获和事件冒泡、addEventListener

222 篇文章 6 订阅
87 篇文章 1 订阅


1、事件捕获

事件捕获是从document开始发生,发生顺序一直向内,直到最后一个元素结束。


<div id="captureParent">
	capture 父元素
	<p id="captureChildren">capture 子元素</p>
</div>

captureParent.addEventListener("click", function() {
	console.log('捕获 父元素');
}, true);

captureChildren.addEventListener("click", function() {
	console.log('捕获 子元素');
}, true)

2、事件冒泡

事件冒泡是从最内层元素开始发生,发生顺序一直向外,直到document冒泡才结束。


<div id="bubblingParent">
	bubbling 父元素
	<p id="bubblingChildren">bubbling 子元素</p>
</div>

bubblingParent.addEventListener("click", function() {
	console.log('冒泡 父元素');
}, false);

bubblingChildren.addEventListener("click", function() {
	console.log('冒泡 子元素');
}, false);

在这里插入图片描述


3、事件捕获和事件冒泡同时存在

<div id="CBparent">
	CB 父元素
	<p id="CBchildren">CB 子元素</p>
</div>

CBparent.addEventListener("click", function() {
	console.log("CBparent 捕获");
}, true);

CBchildren.addEventListener("click", function() {
	console.log("CBchildren 捕获");
}, true);

// 事件冒泡
CBparent.addEventListener("click", function() {
	console.log("CBparent 冒泡");
}, false);

CBchildren.addEventListener("click", function() {
	console.log("CBchildren 冒泡");
}, false);

在这里插入图片描述


4、总结

4.1、从 document 开始往被点击的节点捕获前进,遇到注册的捕获事件就立刻执行该事件。
4.2、到达被点击的节点后执行注册的事件。
4.3、执行完被点击的节点上的事件后,冒泡前进,遇到注册的冒泡事件就立刻执行该事件。


5、扩展

5.1、对于非点击的节点,先执行捕获再执行冒泡。
5.2、对于被点击的节点,按照顺序执行先注册的事件。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值