js事件代理机制

作者: 李诺哦 | 来源:发表于2017-09-14 00:08 被阅读95次

JavaScript事件代理

当我们需要对很多元素添加事件的时候,可以通过将事件添加到它们的父节点而将事件委托给父节点来触发处理函数。这主要得益于浏览器的事件冒泡机制

下面我们用一个简单的例子来介绍js的事件代理机制
有如下代码,当需要为ul下面拥有很多li

<ul class="list">
  <li>hello world</li>
  <li>name</li>
  <li>age</li>

需要做出效果,点击li标签时,在控制台输出这个li标签的内容,通常需要做以下处理

function $(selector){
  return document.querySelector(selector)
}

for(var i=0; i<$(".list").children.length; i++){
$(".list").children[i].onclick = function(){
  console.log(this.innerText)
}
}

依次点击li标签,控制台依次出现点击事件,如下图:


上图链接
使用事件代理机制,当事件冒泡到父元素时,通过检查事件对象(target)判断获取事件源li,代码如下:
function $(selector){
    return document.querySelector(selector)
}


$(".list").onclick = function(e){
  if(e.target){
    console.log(e.target.innerText)
  }
}

依次点击li标签,控制台依次出现点击事件,如下图:

注意: 如果这个元素中的li频繁增减,函数因开始就已经选中ul下的li,并不知道后面增减的li。此时代码就可能出错

此时使用事件代理机制,能更好简单的解决这个问题,为刚才两个案列增加一个add按钮,实现效果,每点击一次会在ul下新增一个li。

方法1


如上图,使用方法1,除原本的3个li外,点击新增的li无效果
方法2

使用方法2,点击新增的li,依然能实现效果。

相关文章

  • JS 事件(2)

    1、事件传播机制、阻止传播、取消默认事件、事件代理这些到底是什么呢? ①事件传播机制:JS事件传播包括三个阶段: ...

  • js事件深入学习

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

  • 性能优化——事件代理

    了解过JS的事件机制应该知道JS的事件触发后会有一个冒泡阶段。事件代理就是利用了这个机制。 我们考虑这样一个情况 ...

  • js事件代理机制

    JavaScript事件代理 当我们需要对很多元素添加事件的时候,可以通过将事件添加到它们的父节点而将事件委托给父...

  • js事件委托

    前言 事件委托,也叫事件代理,是js事件中的一种常用技巧。事件委托的原理就是利用冒泡事件的机制,为一些节点的祖先节...

  • 事件处理机制

    Node.js事件触发对象有哪些方法? 详细讲讲Node.js事件机制是怎样的? Node.js事件机制和Java...

  • DOM事件概念以及过程

    解释以下概念:事件传播机制、阻止传播、取消默认事件、事件代理 事件传播机制 事件传播机制分为三个阶段 事件捕获阶段...

  • DOM事件概念以及过程

    解释以下概念:事件传播机制、阻止传播、取消默认事件、事件代理 事件传播机制 事件传播机制分为三个阶段 事件捕获阶段...

  • javascript事件

    解释以下概念:事件传播机制、阻止传播、取消默认事件、事件代理。 事件传播机制事件传播机制分为三个阶段 事件捕获阶段...

  • 什么是事件代理和事件委托

    昨天讲过了事件冒泡,其实事件代理和事件委托就是来源于事件冒泡机制。经常写js的人应该都知道这个方法。一个交互丰富的...

网友评论

    本文标题:js事件代理机制

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