DOM-事件冒泡(Bubble)


什么是冒泡?

       如果我是一个小男生,非常喜欢班上的一位小女生,有一天我忍不住亲了她一口,然后被她揍了一顿,她回去告诉她爸爸,没一会小女孩的爸爸也气冲冲的找到我把我打一顿,晚上的饭桌上,爸爸把这个事情告诉了小女孩的爷爷,她爷爷连饭都还没有吃完就找到我把我打一顿,喲,这可划不来,我亲她一口被揍了三顿。所谓的冒泡指的就是事件的向上传导,当后代元素上的事件被触发时,其祖先元素的相同事件也会被触发,在开发中大部分情况冒泡都是有用的。


提示:以下是本篇文章正文内容,下面案例可供参考

一、怎么取消冒泡?

       我亲了小女孩一口她揍了我一顿以后我希望她不要告诉她爸爸,我就问她能不能做我女朋友,她答应了我就不用挨揍了。

       如果不希望发生事件冒泡可以通过事件对象来取消冒泡,将事件对象的cancelBubble设置为true,即可取消冒泡.

二、案例分析

1.全文代码

代码如下(示例):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>事件冒泡(Bubble)</title>
		<style type="text/css">
			#box1{
    
    
				height: 200px;
				width: 200px;
				background-color: deepskyblue;
			}
			#s1{
    
    
				background: blueviolet;
			}
			*:hover{
    
    
				cursor: pointer;
			}
		</style>
		<script type="text/javascript">
			window.onload = function(){
    
    				
				//为span绑定单击响应函数
				var span = document.getElementById("s1");
				span.onclick = function(event){
    
    
					
				//解决兼容性
				event = event || window.event;
				
				alert("我是span");
				
				/*取消冒泡*/					
				event.cancelBubble = true;
				};
				
				//为span绑定单击响应函数
				var div = document.getElementById("box1");
				div.onclick = function(event){
    
    
					//解决兼容性
					event = event || window.event;
					alert("我是div");					
					/*取消冒泡*/					
					event.cancelBubble = true;
				};
				
				//为span绑定单击响应函数
				document.body.onclick = function(){
    
    
					alert("我是body");
				};
			};
		</script>
	</head>
	<body>
		<div id="box1">
			我是div
			<span id="s1">我是span</span>
		</div>
	</body>
</html>

2.重点部分

代码如下(示例):

//为span绑定单击响应函数
	var span = document.getElementById("s1");
	span.onclick = function(event){
    
    		
		//解决兼容性
		event = event || window.event;		
		alert("我是span");		
		/*取消冒泡*/					
		event.cancelBubble = true;
	};

总结

       冒泡对大多数的程序来说还是很有用的,只是一小部分的地方不需要冒泡,所以在处理这个问题的时候要看自己的需求。

猜你喜欢

转载自blog.csdn.net/qq_46665317/article/details/108021359