美文网首页
事件代理

事件代理

作者: 苦瓜_6 | 来源:发表于2018-10-07 23:36 被阅读0次

简单情况的事件代理写法

假设是这个么结构,然后现在要监听的是 父容器 ul :

  <ul class="parent">
    灰色的是父容器 ul ,白色区域是 子元素 li 
    <li class="child">child 1</li>
    <li class="child">child 2</li>
    <li class="child">child 3</li>
    <li class="child">child 4</li>
  </ul>

那么我们的监听代码可以这么写:

let parent = document.querySelector('.parent')
parent.addEventListener('click',handler)
function handler(e) {
/*   if(e.target.tagName.toLowerCase() === 'li') {
      console.log(e.target.innerText)
  }
  */
  if(e.target.matches('li')) {
     console.log(e.target.innerText)
  }
}

点击这里 预览

比较稍复杂的情况 ---- 递归

  <div id="result">
    假设现在要监听的是child 元素,但是监听器绑定在 result容器上
    <ul class="parent">
      <li class="child">
        <a href="#">child 1</a>
        <span>1 </span>
      </li>
      <li class="child">
        <a href="#">child 2</a>
        <span>2</span>
      </li>
      <li class="child">
        <a href="#"> child 3 </a>
        <span>3 </span>
      </li>
      <li class="child">
        <a href="#"> child 4 </a>
        <span> 4 </span>
      </li>
    </ul>
  </div>

监听代码:

let result  = document.getElementById('result')

result.addEventListener('click',handler)
function handler(e) {
  let target = e.target;
  while(target !== result){
    if(target.tagName.toLowerCase() === 'li'){
       console.log(target.innerText);
       break;
    } 
    target = target.parentNode;    
  }
}

点击这里 预览

相关文章

  • 第二十天web前端面试题

    1,什么是事件代理且描述事件代理的原理及为什么要用事件代理? 事件委托也叫事件代理。利用事件冒泡,让自己的触发的事...

  • 概念

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

  • Block和代理协议

    代理协议: 1.要确定谁是代理对象,谁是被代理对象。 事件在哪里产生,谁就被代理对象。 事件在哪里响应,谁就是代理...

  • dom事件代理

    实现一个js事件代理的模块,帮助用户快速实现事件代理。

  • 【事件代理】 动态数据列表里,如何监听每条数据的点击?

    前言 在问题前,需要先清楚关于事件冒泡、事件代理的定义 事件冒泡 事件代理 原理: 事件冒泡机制实现方式:可用ad...

  • 前端面试题套路

    套路一:事件代理 1、事件代理基本原理 事件代理的基本原理简单来说就是将子元素的事件通过冒泡的形式交由父元素来执行...

  • 事件代理

    1.问题描述 双击文章栏目中的单词可以添加到生词栏目中,我们可以给每个单词添加一个dblclick事件,那么这里就...

  • 事件代理

    javascript和jQuery的事件代理不同写法 首先思考一下:为什么我们要用到事件代理??? 举个栗子父元素...

  • 事件代理

    简单情况的事件代理写法 假设是这个么结构,然后现在要监听的是 父容器 ul : 那么我们的监听代码可以这么写: 点...

  • 事件代理

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

网友评论

      本文标题:事件代理

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