JS burbujeo de eventos y delegado de eventos (delegado)

En primer lugar, el burbujeo de eventos

  • Se refiere a la conducción hacia arriba de los acontecimientos, cuando el evento se dispara en los elementos descendientes, que los mismos elementos evento antepasado se activarán
  • Si no desea que suceda burbujeo evento se puede cancelar por burbujeo de las propiedades del objeto de evento

Por ejemplo:
representaciones:
Aquí Insertar imagen Descripción
Donde el cuerpo era su abuelo, div verde (I box1) es el padre, el período de amarillo (yo soy un palmo) es el hijo de tres generaciones a esta función de respuesta tie-clic
código de implementación

cuerpo del código

<body>
	<div id="box1">
		我是box1
		<span id="s1">我是span</span>
	</div>
</body>

código CSS

<style type="text/css">
	#box1{
		width: 200px;
		height: 200px;
		background-color: yellowgreen;
	}
	
	#s1{
		background-color: yellow;
	}
</style>

código JS

<script type="text/javascript">
	
	window.onload = function(){
		
		//为s1绑定一个单击响应函数
		var s1 = document.getElementById("s1");
		s1.onclick=function(){
			alert("我是span单击响应函数");
		}
		
		//为box1绑定一个单击响应函数
		var box1 = document.getElementById("box1");
		box1.onclick=function(){
			alert("我是box1单击响应函数");
		}
		
		//body绑定一个单击响应函数
		document.body.onclick = function(){
			alert("我是body单击响应函数")
		}
	}
</script>

efecto desencadenante es el siguiente:
Al hacer clic en el hijo (Span), que, a su padre (div) y su abuelo (el cuerpo) se activará la función de respuesta correspondiente, que mi padre empatía

Lograr terminar la burbuja

  • Para cancelar la cancelBubble objeto de evento mediante el burbujeo de la propiedad
  • event.cancelBubble = true;
  • Tales como la terminación de su hijo burbuja (Span), es decir, que no es mi padre y abuelo que desencadena el evento de clic

El código completo

s1.onclick=function(event){

	//解决浏览器兼容问题
	event=event || window.event;
	alert("我是span单击响应函数");
	
	//取消冒泡
	event.cancelBubble = true;
}

En segundo lugar, el delegado de eventos (delegado)

lo que es

  • Se refiere a un evento ancestro común para unificar el elemento de unión
  • Cuando se activa un evento en las generaciones futuras, que habría sido el burbujeo a los antepasados
  • función de respuesta a eventos antepasado elementos de mango

Los siguientes ejemplos ilustran Sub
representaciones:
Aquí Insertar imagen Descripción
Adición de hipervínculos y eventos dinámicos vinculante

código de implementación
cuerpo del código

	<body>
		<button id="btn01">添加超链接</button>
		
		<ul id="u1" style="background-color: yellow;">
			<li ><a href="javascript:;" class="link">超链接一</a></li>
			<li ><a href="javascript:;" class="link">超链接二</a></li>
			<li ><a href="javascript:;" class="link">超链接三</a></li>
		</ul>
	</body>

código JS

<script type="text/javascript">
	window.onload = function(){
		
		var u1= document.getElementById("u1");
		//点击按钮以后添加超链接
		var btn01 = document.getElementById("btn01");
		btn01.onclick=function(){
			
			//创建一个li
			var li = document.createElement("li");
			li.innerHTML="<a href='javascript:;' class='link'>新建超链接</a>";
			
			//将li添加到ul中
			u1.appendChild(li);
		}
		
		u1.onclick = function(event){
			//解决浏览器兼容问题
			event = event || window.event;
			
			/**
			 * target
			 *  -事件对象的target属性表示触发事件的对象
			 *  -ul中包括li、文本及超链接,只有点击超链接触发事件
			 */
			if(event.target.className == "link"){
				alert("我是ul单击响应函数");
			}
		}
	}
</script>

En tercer lugar, el resumen

burbujeante evento es el delegado de eventos fundación y difusión de eventos, obtener una buena comprensión

Ha publicado 198 artículos originales · ganado elogios 94 · vistas 90000 +

Supongo que te gusta

Origin blog.csdn.net/shang_0122/article/details/104884727
Recomendado
Clasificación