ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript从入门到跑路-----小文的js学习笔记(15 —1)--------事件流

2020-06-10 19:40:16  阅读:239  来源: 互联网

标签:15 捕获 javascript js 冒泡 div document 事件


**
javascript从入门到跑路-----小文的js学习笔记(1)---------script、alert、document。write() 和 console.log 标签


javascript从入门到跑路-----小文的js学习笔记目录
**

一、事件

含义: 事件是由浏览器动作(如浏览器载入文档 )和用户动作(如点击onclick)触发所产生的人机交互瞬间。

你也可以理解为 为其设置的在干了某事之后必定要发生的事件。

二、事件流

含义: 事件流所描述的是从页面中接受事件的顺序。

然后我们来说说事件流的三个阶段,:事件捕获阶段、处于目标阶段和事件冒泡阶段,
在这里插入图片描述
      当事件发生时,首先发生的是事件捕获,为父元素截获事件提供了机会,然后是目标接受接受事件,然后进行事件冒泡,即我们的页面中对我们的事件做出反应。

三、事件冒泡和事件捕获

事件冒泡: 事件开始后,由具体元素向外部传播(由内向外传播)
事件捕获: 事件开始后,由最外部的父元素向内部的具体元素传播(由外向内传播)

那我们下面就与一个例子:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	 <style>
			#a{
		       height: 200px;
			   width: 200px;
			   background: yellow;
			}
			#b{
				height: 100px;
				width: 100px;
				background: yellowgreen;				
			}
	 </style>
	<body>			
            <div id="a">
				<div id="b"></div>
			</div>			
       	 <script>
				var as=document.getElementById("a");
				var bs=document.getElementById("b");
								
			as.onclick = function(){
				alert("我是a");
			}	
			bs.onclick = function(){
				alert("我是b");
			}	
					   
		  </script>
	</body>
</html>

用例子来解释事件冒泡的顺序就是:div b ===》 div a ===》body ==》html ==》document
而事件捕获的顺序恰恰相反:document ==》html ==》body ==》aiv a ==》div b

     这里我们可以看到我们的 div a 里面包含了一个div b,然后分别为其添加一个不同的事件
但是当你点击div b的时候,除了会执行你本事的事件外,它还会执行一次你外面的div a 的事件
这就是事件冒泡。

四、阻止冒泡

但是有时候我们并不需要事件冒泡,所以这个时候我们就需要阻止冒泡
event.stopPropagation( )
同样还是上面那个例子:下图仅截取关键部分在这里插入图片描述
这样我们的该事件就不会发生冒泡现象。
**
         ᴹᵃʸ ʸᵒᵘ ᵇᵉ ʸᵒᵘʳ ʰᵉʳᵒ, ⁿᵒᵗ ᵃᶠʳᵃⁱᵈ ᵗᵒ ˡᵉᵃᵛᵉ, ⁿᵒᵗ ᵃᶠʳᵃⁱᵈ ᵗᵒ ᵇᵉ ᵃˡᵒⁿᵉ.
                        ------------------愿你能成为自己的英雄,不惧离别不怕孤独。

标签:15,捕获,javascript,js,冒泡,div,document,事件
来源: https://blog.csdn.net/qq_45948983/article/details/106639029

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有