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

事件冒泡和事件捕获

        • 初始化代码示例
        • 初始化效果图
      • 事件冒泡和事件捕获
      • addEventListener()
      • 注意
      • stopPropagation()

初始化代码示例

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


<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>

初始化效果图

两分钟带你了解~事件冒泡和事件捕获_第1张图片

事件冒泡和事件捕获

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

这里给大家截个图:
两分钟带你了解~事件冒泡和事件捕获_第2张图片

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);
		

默认事件冒泡点击效果图:
两分钟带你了解~事件冒泡和事件捕获_第3张图片

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

那么我们将事件全部改为true事件捕获:
两分钟带你了解~事件冒泡和事件捕获_第4张图片

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

注意

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

stopPropagation()

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

两分钟带你了解~事件冒泡和事件捕获_第5张图片

因此事件冒泡的时候点击哪儿就从那儿停止事件的传播;
两分钟带你了解~事件冒泡和事件捕获_第6张图片
两分钟带你了解~事件冒泡和事件捕获_第7张图片
两分钟带你了解~事件冒泡和事件捕获_第8张图片

你可能感兴趣的:(html5)