美文网首页
简述事件委托(事件代理)

简述事件委托(事件代理)

作者: Alexa_老王 | 来源:发表于2020-04-16 18:03 被阅读0次

事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。

举个生活中的例子,中午出去买饭,你想吃黄焖鸡,甲也是,乙也是,其他人都是,那你们就可以石头剪刀布让一个人去帮大家一块买来,省时又省力

例如:我要给每个li标签都加一个事件
<ul id="box">
<li>111</li>
<li>222</li>
<li>333</li>
<li>444</li>
</ul>

(1)、常规思路利用for循环的机制添加

window.onload = function(){
var box = document.getElementById("box");
var li = box.getElementsByTagName('li');
for(var i=0;i<li.length;i++){
li[i].onclick = function(){
alert(123);
}
}
}

弊端:如果li标签有100个,那就要循环遍历100次,这样操作DOM次数太多 极大的消耗性能

(2)、利用事件委托来添加事件
原理:
Event对象为我们提供了一个属性叫“target”,它可以返回事件的目标节点(也称‘事件源’)。即“target”可以表示当前事件操作的DOM。这里注意一下兼容性问题:IE浏览器用event.srcElement,其他浏览器用ev.target;
但是你此时只是获取了当前节点的位置,怎么获取标签名呢?可以用nodeName来获取具体标签名(这里返回是大写),然后用toLowerCase()方法来转成小写

window.onload = function(){
  var box = document.getElementById("box");
  box.onclick = function(ev){
    var ev = ev || window.event; // 兼容IE
    var target = ev.target || ev.srcElement; // 兼容IE
    if(target.nodeName.toLowerCase() == 'li'){
         alert(123);
    }
  }
}

优点:这样即使DOM数量很多,但每次只执行一次DOM操作,将大大减少DOM的操作,优化性能

这就是事件委托(事件代理)

相关文章

  • 简述事件委托(事件代理)

    事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。 举个生活中的例子,中午出去买饭,...

  • 概念

    事件委托,事件代理 事件代理又称之为事件委托。是JavaScript中常用绑定事件的常用技巧。顾名思义,“事件代理...

  • 前端常见面试题(十一)@郝晨光

    什么是事件委托?为什么要用事件委托? 什么是事件委托? 事件委托,又称事件代理,就是将元素的事件处理交由父元素或者...

  • 事件委托

    事件委托 什么是事件委托(事件代理): 事件委托就是利用事件冒泡的原理,将事件注册到父元素上,减少子元素的事件注册...

  • 事件委托(事件代理)

    利用事件的冒泡传播机制(触发当前元素的某个行为,它父级所有的相关行为都会被触发),如果一个容器中很多元素需要绑定事...

  • 事件委托(事件代理)

    链接地址:http://www.cnblogs.com/liugang-vip/p/5616484.htmlhtt...

  • 事件代理/事件委托

    利用事件冒泡机制,通过设置一个事件处理程序,来管理某一类型的所有事件。(例如:取快递、ul-li操作) 1. 取快...

  • 事件委托/事件代理

    什么是事件委托/事件代理?利用事件的冒泡传播机制(触发当前元素的某一个行为,它父级所有元素相关行为都会被触发),如...

  • 事件代理(事件委托)

    事件流 事件从页面中接收事件的顺序 事件捕获 从window对象传到目标节点(上层到下层),成为捕获阶段 事件冒泡...

  • 事件委托(事件代理)

    概念 两者指的是同一件事情,只是角度不同,比如,一个A元素把事件交给父级元素B处理,那么A就是委托方,B就是代理放...

网友评论

      本文标题:简述事件委托(事件代理)

      本文链接:https://www.haomeiwen.com/subject/zzsdvhtx.html