事件委托

什么是事件委托?

为什么会有事件委托

因为事件绑定性能不好

什么是事件绑定?

对Dom元素绑定事件处理函数,事件触发的时候,调用这个函数
onclick onmouserover/out/dow ....

<input type="button" value="click me" onclick="hello()">

监听方式:
<input type="button" value="click me" id="btn">
<script>
document.getElementById("btn").onclick = function(){
	alert("hello world!");
}
</script>
  • 事件监听优势
    可以绑定多个事件,而常规的事件绑定只执行最后一个事件
<input type="button" value="click me" id="btn3">
<script>
var btn3 = document.getElementById("btn3");
btn3.onclick = function(){
	alert("hello 1"); //不执行
}
btn3.onclick = function(){
	alert("hello 2"); //执行
}
</script>



btn4.addEventListener("click",hello1); // 执行
btn4.addEventListener("click",hello2); // 执行


  • 事件委托

利用事件冒泡的原理,把事件加到父元素或者祖先元素上,触发执行效果

  • 为什么有了事件绑定和监听还要事件委托
通过事件委托,减少dom的访问和操作,提高性能

举个?:

<ul id="list">
  <li id="item1" >item1</li>
  <li id="item2" >item2</li>
  <li id="item3" >item3</li>
</ul>

var item1 = document.getElementById("item1");
var item2 = document.getElementById("item2");
var item3 = document.getElementById("item3");


不用事件委托的方式:

item1.onclick = function(){
	alert("one");
}
item2.onclick = function(){
	alert("two");
}
item3.onclick = function(){
	alert("three");
}

事件委托方式:

document.addEventListener("click",function(event){
	var target = event.target;
	if(target == item1){
		alert("hello item1");
	}else if(target == item2){
		alert("hello item2");
	}else if(target == item3){
		alert("hello item3");
	}
})

有上面可知,事件委托可以减少Dom的操作,和减少事件的绑定,由此提升性能

减少Dom操作为什么会提高性能(js引擎和,渲染引擎独立访问需要耗能)


  • 减少事件绑定提高性能原因
item1.onclick = function(){
	alert("one");
}

普通事件绑定,绑定一个事件,就要调用一个函数
函数是对象,对象要消耗内存,,对象越多,内存消耗越大,自然性能就差了


  • paas项目中运用,规定不能用原生的onclick事件,要用Onclick
Onclike在组件卸载的时候回注销绑定的事件
原生的事件不会卸载事件导致内存泄漏,绑定的事件函数是对象,对象就要消耗内存



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值