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

使用原生JS 实现事件委托

作者: 莱昂纳德刚 | 来源:发表于2017-04-24 11:07 被阅读0次

JavaScript事件代理

事件绑定

要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数。我们可以在DOM元素上绑定onclick、onmouseover、onmouseout、onmousedown、onmouseup、ondblclick、onkeydown、onkeypress、onkeyup等。

事件冒泡及捕获

关于事件监听,W3C规范中定义了3个事件阶段,依次是捕获阶段、目标阶段、冒泡阶段。

事件捕获:当某个元素触发某个事件(如onclick),顶层对象document就会发出一个事件流,随着DOM树的节点向目标元素节点流去,直到到达事件真正发生的目标元素。在这个过程中,事件相应的监听函数是不会被触发的。

事件目标:当到达目标元素之后,执行目标元素该事件相应的处理函数。如果没有绑定监听函数,那就不执行。

事件冒泡:从目标元素开始,往顶层元素传播。途中如果有节点绑定了相应的事件处理函数,这些函数都会被一次触发。

img

事件委托

当需要点击h1标签或h1标签里元素的时候,在点击h1时启动监听效果。

<div>
  <p>我是<span>p</span></p>
  <h1>我是<span>h1</span></h1>
</div>
var div = document.querySelector('div')
//监听原事件委托的次数太多,严重影响性能
div.addEventListener('click',function(e ){
  var t = e.target
  while(t.tagName !== 'H1'){
    t = t.parentNode
    if(t === div){
      t = null
      break;
//while循环时,已找到父元素,就不需要再往上一级寻找,直接断开循环。
    }
  } if (t) {
    console.log('h1')
  } else{
    console.log('你点击的不是div里的h1')
  }
})

相关文章

  • 使用原生 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/tcdezttx.html