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

JavaScript事件代理(事件委托)

作者: acsamson | 来源:发表于2019-05-26 17:06 被阅读0次

简单说下为什么要有事件委托
比如我们有1w个li, 要实现每个li点击触发事件, 如果对每个li都进行事件绑定那就太耗性能了
不科学
因此把点击事件绑定在父元素就好了, 例如ui上
当发生li点击事件的时候冒泡到父元素上, 然后父元素再去找是哪个子元素被点击了
因此只要绑定一个监听事件在父元素上就好了

/*
@param  parentElem 父元素
@param  type 事件类型
@param  childElem 子元素
@param  fn 触发的事件
*/
function bindEvent(parentElem, type, childElem, fn) {
  if (fn == null) {
    fn = childElem;
    childElem = null;
  }
  // 委托给父元素
  parentElem.addEventListener(type, e => {
    var target;
    // 如果有孩子元素就代表要做事件处理
    if (childElem) {
      target = e.target(); // 代表获取当前触发事件的元素
      if (target.matches(childElem)) {
        fn.call(target, e); // 指定触发元素为target上下文, 传入事件
      } else {
        fn(e); //如果没有我要的子元素就不用进行事件代理
      }
    }
  });
}

相关文章

  • 概念

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

  • 什么是事件委托?

    1.什么是事件委托?事件委托也称之为事件代理(Event Delegation)。是JavaScript中常用绑定...

  • js 事件委托 事件代理

    js 事件委托 事件代理 JavaScript高级程序设计上解释:事件委托就是利用事件冒泡,只指定一个事件处理程序...

  • DOM事件委托

    事件代理又叫事件委托,JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可...

  • DOM 事件委托

    事件代理又叫事件委托,JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可...

  • JavaScript事件代理(事件委托)

    基本概念 事件代理(Event Delegation),又称之为事件委托。是JavaScript中常用绑定事件的常...

  • JavaScript事件代理(事件委托)

    简单说下为什么要有事件委托比如我们有1w个li, 要实现每个li点击触发事件, 如果对每个li都进行事件绑定那就太...

  • JavaScript事件代理(事件委托)

    基本概念 事件代理(Event Delegation),又称之为事件委托。是JavaScript中常用绑定事件的常...

  • js事件深入学习

    JavaScript的事件机制包含,事件绑定、事件监听、事件委托(事件代理)等 js中的事件流 ① .冒泡:当下级...

  • 了解js下的事件委托或事件代理

    概述 事件委托,也叫事件代理,从JavaScript高级程序设计上讲::事件委托就是利用事件冒泡,只指定一个事件处...

网友评论

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

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