DOM 之 事件委托

在 js中,页面中事件处理程序的数量与页面整体性能直接相关。只要在使用事件处理程序时多注意一些方法,就可以改善页面性能。

一、事件委托是什么?

 事件委托是当事件触发时,把要做的事委托给父元素(或父元素的父元素)来处理。

利用冒泡原理把事件加到父级上,通过判断事件来源的子集,执行相应的操作。

事件委托能对特定的每一个节点添加触发事件监听器。

二、事件委托的应用

如(当点击大写字母时会出现对应小写字母):

<body>
    <ul id="abc">
      <li id="A">A</li>
      <li id="B">B</li>
      <li id="C">C</li>
    </ul>
    <script>
      var abc = document.getElementById("abc");
      abc.addEventListener("click", function (event) {
        var target = event.target;
        console.log(target);
        switch (target.id) {
          case "A":
            target.innerHTML = 'a';
            break;
          case "B":
            target.innerHTML = 'b';
            break;
          case "C":
            target.innerHTML = 'c';
            break;
        }
      });
    </script>
</body>
当点击B时,“B”变成了“b”

 

以上例子是使用事件委托来完成,当点击子元素,事件触发会冒泡到父元素触发,也就是事件委托,此时执行父元素事件。执行父元素事件时,利用switch方法通过辨别所点击的子元素id,从而判断要发生哪一子元素所需的事件结果。

这样只是触发了父元素的一个事件,只用在一个节点添加事件。不会像原始的方法,对每一子元素都创建一个相似的事件,减少代码对相似事件冗余的编写。这种方式占用内存更少,所有使用按钮的事件(大多数鼠标事件和键盘事件)都适用于这个解决方案。

 三、事件委托的优点

只要可行,就应该考虑只给 document 添加一个事件处理程序,通过它处理页面中所有某种类型的事件。

事件委托的优点: 

  • document 对象随时可用,任何时候都可以给它添加事件处理程序(不用等待 DOMContentLoaded或 load 事件)。这意味着只要页面渲染出可点击的元素,就可以无延迟地起作用。

  • 节省花在设置页面事件处理程序上的时间。只指定一个事件处理程序既可以节省 DOM 引用,也可以节省时间。

  • 减少整个页面所需的内存,提升整体性能。

    最适合使用事件委托的事件包括:click、mousedown、mouseup、keydown 和 keypress。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值