美文网首页让前端飞
据说80%的前端写出的事件委托都有bug

据说80%的前端写出的事件委托都有bug

作者: littleyu | 来源:发表于2018-12-25 14:25 被阅读13次

事件委托是什么?有什么好处?

  • 假设父元素有一堆儿子,我不监听儿子们,而是监听父亲,看触发事件的是哪个儿子,这就是事件委托。
  • 还可以监听还没有出生的儿子(动态生成的元素节点),省监听器。
    事件委托嘛,随手就来一个
function listen(element, eventType, selector, fn) {
  const el = document.querySelector(element)
  el.addEventListener(eventType, e => {
    if (e.target.matches(selector)) {
      fn.call(e.target, e)
    }
  })
}

相信大部分写出的代码都是这样子的把,

本着能用就好,

应付面试官也够用,

就这么将就把,

但是这串代码却是存在 BUG 的。

再让我们继续来看看一个工资 12k+ 的前端写的时间委托代码

function listen(element, eventType, selector, fn) {
  const f_element = document.querySelector(element)
  f_element.addEventListener(eventType, e => {
    let el = e.target
    while (!el.matches(selector)) {
      if (f_element === el) {
        el = null
        break
      }
      el = el.parentNode
    }
    el && fn.call(el, e)
  })
  return f_element
}

最后,拿去轻松愉快撸代码把~

相关文章

  • 据说80%的前端写出的事件委托都有bug

    事件委托是什么?有什么好处? 假设父元素有一堆儿子,我不监听儿子们,而是监听父亲,看触发事件的是哪个儿子,这就是事...

  • 面试相关

    前端开发面试题(重要)看完这篇关于MVVM的文章,面试通过率提升了80%简述JS中的事件委托和事件代理

  • 前端 - 事件委托

    事件委托,就是把事件委托给别人,让别人来帮自己完成。 注:本文 JavaScript 代码部分使用 jQuery ...

  • 什么时候用事件委托

    事件委托是前端程序猿经常使用的方法,为什么他倍受推崇,首先解释一下什么是事件委托,事件委托就是通过事件冒泡的原理,...

  • 解决IOS下事件委托失效的方法

    出现的BUG 当使用事件委托给【目标元素】添加 click 事件时,如果【代理元素】是 document或body...

  • JS事件委托(事件代理)与事件广播

    作为一个前端工程师,事件委托应该是必须掌握的基本知识,大家在面试中几乎都会被问到此问题,由此可见,事件委托的重要性...

  • web前端面试题@六(事件委托)

    *说到事件委托,我们首先先要知道什么是事件委托—— · 那么什么是事件委托呢??? JS里的事件委托就是当事件...

  • 前端常见面试题(十一)@郝晨光

    什么是事件委托?为什么要用事件委托? 什么是事件委托? 事件委托,又称事件代理,就是将元素的事件处理交由父元素或者...

  • 事件委托

    ------------------事件委托----------------- 事件: 事件委托: 原理: 冒泡 ...

  • 十六、DOM之事件委托 ------ 2020-01-05

    1、事件委托: 2、事件委托的优势:

网友评论

    本文标题:据说80%的前端写出的事件委托都有bug

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