js事件委托解析

前言

本文章虽然讲的是事件委托,但是会连带讲很多相关的知识点,如果觉得啰嗦,可直接看一的概念和五的实现函数哈

一、什么是事件委托

事件委托的原理就是利用事件冒泡,即把子元素所需要响应的事件绑定到父元素,通过子元素事件冒泡到父元素,然后父元素通过绑定的事件中的target去判断是哪个子元素,从而做对应处理。这样事件只需绑定到父元素即可而不需要每个子元素都去绑定事件,这样大大提高了性能。可事件委托的事件有click、mousedown、mouseup、keydown、keyup、keypress 等

二、事件流(事件触发过程)

DOM2级事件规定一个事件的完整过程,首先是捕获阶段然后是目标阶段最后是冒泡阶段。捕获阶段就是从document逐层向内进行传播,目标阶段就是触发事件的元素,冒泡阶段是从内到外再次回到document。

三、addEventListener

addEventListener用于为元素绑定事件的方法,其语法如下

addEventListener(参数1,参数2,参数3)
参数1 :事件名称(例如点击事件,‘click’)
参数2:事件执行函数
参数3(不写时默认false):false(默认值,表示事件冒泡阶段绑定事件)
	  				    true(表示事件捕获阶段绑定事件)

四、 event.target

event.target 是指触发事件的元素,常用的属性有:

event.target.nodeName     //获取触发事件元素标签名(注意获取到的是标签名的大写)

event.target.id       //获取触发事件元素的id

event.target.className    //获取触发事件元素class类名

event.target.innerHTML    //获取触发事件元素的内容

五、实现函数

事件委托就是每个人都要做一遍的事,统一委托给一个人去做;如下面三个button本来都要绑定click事件才能实现点击弹出button按钮中的文字,但是现在统一委托给父元素div,然后通过e.target去实现具体操作

<div id="bnt">
	<button id="bnt1">hello button1</button>
	<button id="bnt2">hello button2</button>
	<button id="bnt3">hello button3</button>
</div>
function eventDelegation(){
	let bnt = document.getElementById('bnt');
	//在div上添加点击事件	 
	bnt.addEventListener("click",(e)=>{				
		// if(e.target.nodeName == 'BUTTON'){
		// 	alert(e.target.innerHTML)
		// }
		
		var bntID = e.target.id;			
		switch( bntID ){
			case 'bnt1': alert(e.target.innerHTML);break;
			case 'bnt2': alert(e.target.innerHTML);break;
			case 'bnt3': alert(e.target.innerHTML);break;
		}											
	})
}

完结。。。。。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值