美文网首页
使用原生 JS 实现事件委托

使用原生 JS 实现事件委托

作者: shadow123 | 来源:发表于2017-06-17 13:04 被阅读0次

事件委托是什么

把若干个节点上的相同事件的处理函数event listener绑定到它的父节点上去, 在父节点上统一处理,减轻对event listener的管理负担。

为什么要有事件委托

1.监听还不存在的元素或者已经存在的元素
2.减少监听器的个数

如何做到事件委托

<body>
  <button id="xxx">取号</button>
  <ul>
    <li>
      <ol id="yyy"></ol>
    </li>
  </ul>
  <script>
    let button = document.querySelector("#xxx");
    let yyy = document.querySelector('#yyy');
    button.addEventListener('click',function(){
      let number = parseInt(Math.random() * 100, 10);
      let li = document.createElement('li');
      let span = document.createElement('span');
      span.textContent = number;
      li.appendChild(span);
      yyy.appendChild(li);
    });
    yyy.addEventListener('click',function(e){
      let element = e.target;
      while(element.tagName !== "LI"){
        if(element === yyy){
          element = null;
          break;
        }
        element = element.parentNode;
      }
      element && element.remove()
    })
  </script>
</body>

用户先点击取号,再点击li元素或者span元素时,就执行ol元素的监听事件,把点击的li元素或span元素删除,不用监听每个元素,监听它们的父元素即可。

相关文章

  • 使用原生 JS 实现事件委托

    1. 事件是什么 DOM事件即为Event对象。Event对象代表事件的状态,比如事件在其中发生的元素、键盘按键的...

  • 使用原生JS 实现事件委托

    JavaScript事件代理 事件绑定 要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素...

  • 使用原生 JS 实现事件委托

    JavaScript与HTML之间的交互是通过事件实现的。在学习事件委托之前,我们需要先了解事件含义、事件绑定、事...

  • 使用原生JS实现事件委托

    什么是事件 事件(event),定义为:比较重大,对一定的人群会产生一定影响的事情。对于前端开发来说,事件就是在浏...

  • 使用原生 JS 实现事件委托

    很多情况下都可能使用到事件委托,那么对于一个使用者来说,为什么要使用事件委托?又是否正确的使用了事件委托?这里我想...

  • 使用原生 JS 实现事件委托

    很多人是在使用事件委托的,那对于一个使用者来说,只要能正确的使用好事件委托,完成工作,就算可以了,那么你有认真的考...

  • 使用原生JS实现事件委托

    事件委托(Event Delegation)是JS中一项十分重要的应用,使用事件委托可以避免对每一个节点添加监听器...

  • 使用原生 JS 实现事件委托

    1、如何监听事件 目前W3C对DOM进行标准化规定中对事件监听有两种方式,DOM level 0 中规定 butt...

  • 使用原生JS实现事件委托

    为什么要用事件委托? 首先,需要了解一下常用的事件监听方法有哪些区别: 常用的监听方法的区别 通常,在页面中监听事...

  • 使用原生 JS 实现事件委托

    1 什么是事件委托? 用个例子就可以很简单的解释事件委托是怎么一回事了: 假设一个公司有三个职员在网上买了东西,那...

网友评论

      本文标题:使用原生 JS 实现事件委托

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