美文网首页
嵌套元素的事件委托

嵌套元素的事件委托

作者: alue | 来源:发表于2023-06-02 14:10 被阅读0次

在document中全局监听事件,能够提升性能,例如

// Listen for clicks on the entire window
document.addEventListener('click', function (event) {

    // Ignore elements without the .click-me class
    if (!event.target.matches('.click-me')) return;
    
    // Run your code...

})

document 上设置监听器,这样页面的所有元素的点击事件,都能触发该监听器。尤其是,一些动态注入的元素来说,这节省了动态增删监听器的工作量。

这里有一个问题,当你的元素存在嵌套时,例如

<button class="click-me">
    <svg aria-label="thumbsup">...</svg>
    喜欢
</button>

这时,点击喜欢,能够正常运行点击处理函数。但是,点击svg时,event.target.matches 会返回 false, 因此无法执行后续逻辑。

解决办法就是用 Element.closest() 方法替代。这个方法匹配特定选择器,返回离当前元素最近的祖先元素(也可以是当前元素本身)。如果匹配不到,则返回 null

// Listen for clicks on the entire window
document.addEventListener('click', function (event) {

    // Ignore elements without the .click-me class
    if (!event.target.closest('.click-me')) return;
    
    // Run your code...

});

这样,事件监听就能够正常工作了。

相关文章

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

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

  • 事件委托

    概念 事件委托,将本来应该绑定到子元素的响应事件委托给父元素,让父元素担当事件监听的职务。 事件流 事件委托是基于...

  • 事件委托笔记

    事件委托原理:事件冒泡机制。 什么是事件委托: 事件委托——给父元素绑定事件,用来监听子元素的冒泡事件,并找到是哪...

  • 事件委托

    事件委托 什么是事件委托(事件代理): 事件委托就是利用事件冒泡的原理,将事件注册到父元素上,减少子元素的事件注册...

  • 事件(二)

    一.事件委托# 事件委托就是利用事件冒泡的原理,把事件添加到父元素或祖先元素上,触发执行效果 事件委托优点1、提高...

  • jq和原生js事件委托.on()、addEventListene

    事件委托就是事件目标自身不处理事件,而是把处理任务委托给其父元素或者祖先元素,甚至根元素(document)。原理...

  • JavaScript--事件委托

    什么是事件委托 把目标元素的事件委托给父元素 利用了事件冒泡的原理 事件委托有什么好处 管理的函数变少了。不需要为...

  • 记录自己理解的事件委托

    1.什么是事件委托? 将子元素的事件委托(也就是绑定)给父元素 2.事件委托的好处? A:减少绑定的次数B:后期新...

  • iOS下的点击事件失效解决方法

    问题 当委托给一个元素添加click事件时,如果事件是委托到 document 或 body 上,并且委托的元素是...

  • 什么是事件委托以及live on delegate之间的关系

    首先什么是事件委派? 事件委派(委托):事件委托就是利用冒泡的原理,把事件加到父元素或祖先元素上,触发执行效果。 ...

网友评论

      本文标题:嵌套元素的事件委托

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