JavaScript:事件流之事件冒泡、取消事件冒泡

上面是三个嵌套的div标签,如果给每一个div都定义一个点击事件,那么当点击里层的div时,其会将点击事件往外传,导致所有父层的点击事件都会被执行

<!DOCTYPE html>
<html>
<head>
	<title>学习事件</title>
<style type="text/css">
	body{
	border: 1px solid black;
}
	div{
		padding: 100px;
	}
	.div1{
		background-color: red;
	}
	.div2{
		background-color: green;
	}
	.div3{
		background-color: gray;
	}
</style>
<script type="text/javascript">
window.onload = function(){
};
</script>
</head>
<body>
<div class="div1" οnclick="alert('div1');">
	<div class="div2" οnclick="alert('div2');">
		<div class="div3" οnclick="alert('div3')">
			
		</div>
	</div>
</div>
</body>
</html>

 下面实现点击按钮浮现div,点击其他部分收起,那么事件冒泡将会影响,执行如下代码,没有作用

<!DOCTYPE html>
<html>
<head>
	<title>学习事件</title>
<style type="text/css">
	div{
		width: 100px;
		height: 100px;
		background-color: gray;
		display: none;
	}
</style>
<script type="text/javascript">
window.onload = function(){
	var oBtn = document.getElementById('btn');
	var oDiv = document.getElementById('div1');

	oBtn.onclick = function(){
		alert("click button");
		oDiv.style.display = 'block';
	}

	document.onclick = function(){
		alert("click document");
		oDiv.style.display = 'none';
	}
};
</script>
</head>
<body>
<input id="btn" type="button" value="点击">
<div id="div1"></div>
</body>
</html>

下面去掉事件冒泡,就起到作用了

<!DOCTYPE html>
<html>
<head>
	<title>学习事件</title>
<style type="text/css">
	div{
		width: 100px;
		height: 100px;
		background-color: gray;
		display: none;
	}
</style>
<script type="text/javascript">
window.onload = function(){
	var oBtn = document.getElementById('btn');
	var oDiv = document.getElementById('div1');

	oBtn.onclick = function(ev){
		var oEvent = ev || event;
		// alert("click button");
		oDiv.style.display = 'block';
		oEvent.cancelBubble = true;//去掉冒泡事件
	}

	document.onclick = function(){
		// alert("click document");
		oDiv.style.display = 'none';
	}
};
</script>
</head>
<body>
<input id="btn" type="button" value="点击">
<div id="div1"></div>
</body>
</html>

发布了126 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_36880027/article/details/104349683