两分钟带你了解~事件冒泡和事件捕获

初始化代码示例

我们先初始化一个小dome,以下是代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>事件冒泡和事件捕获</title>
	</head>
	<style type="text/css">
		*{
			margin: 0;
			padding: 0;
		}
		#outer{
			height: 300px;
			width: 100%;
			background-color: red;
			/* margin: 0 auto; */
		}
		#inner{
			height: 50%;
			width: 50%;
			background-color: green;
			margin: 0 auto;
		}
		#item{
			height: 50%;
			width: 50%;
			background-color: #007BFF;
			margin: 0 auto;
		}
	</style>
	<body>
		<div id="outer">
			<div id="inner">
				<div id="item">
				</div>
			</div>
		</div>
	</body>
</html>

初始化效果图

在这里插入图片描述

事件冒泡和事件捕获

那么什么是事件冒泡,什么是事件捕获。
事件冒泡是事件由内而外的触发,这个基准是html的文档结构。
事件捕获,从字面意思可以看出来捕获,便是在某个地方把它抓住,不让他执行下去了,事件捕获是从外向内开始捕获。
以上为个人理解。

这里给大家截个图:
在这里插入图片描述

addEventListener()

这是原生js用来绑定事件的一个方法,他有三个参数分别是,元素、函数体、true或者false。那么第三个参数代表事件捕获和事件冒泡。
true代表事件捕获
false代表事件冒泡(不设置默认为false)
这个方法虽然能捕获事件,但是不能阻止其他事件的进行。

我们先绑定事件,这边看一下效果图:

var outer = document.getElementById('outer');
	var inner = document.getElementById('inner');
	var item = document.getElementById('item');
	// 红色
	function red(){
		console.log("我是红色");
	}
	// 绿色
	function green(){
		console.log("我是绿色");
	}
	// 蓝色
	function blue(){
		console.log("我是蓝色");
	}
	// 分别添加事件绑定
	outer.addEventListener('click',red,false);
	inner.addEventListener('click',green,false);
	item.addEventListener('click',blue,false);
		

默认事件冒泡点击效果图:
在这里插入图片描述

可以看到它的颜色是由内而外的;

那么我们将事件全部改为true事件捕获:
在这里插入图片描述

他就变了个方向,变成由外而内。

注意

注意它有个代码执行顺序的问题,还是类似于压栈弹栈的动作,先捕获先往下压,先进后出的原则。

stopPropagation()

这个方法不需要参数,用于阻止事件冒泡和事件捕获事件流的传播,事件将不再分配到其他节点。

在这里插入图片描述

因此事件冒泡的时候点击哪儿就从那儿停止事件的传播;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值