gpt4 book ai didi

javascript - 鼠标悬停事件委托(delegate)

转载 作者:行者123 更新时间:2023-11-29 14:53:28 25 4
gpt4 key购买 nike

在创建点击事件时,我尽量只将它们绑定(bind)一次——通常绑定(bind)到预期触发事件的所有节点共享的父节点。然而,我很好奇,鼠标悬停事件的最佳实践是什么:当结果是在鼠标悬停时不断触发事件时,将事件绑定(bind)到父级是否仍然有意义?什么是最有效的做法?

最佳答案

为了结束这个问题,我将从这个答案中解释/引用一些相关注释:' Should all jquery events be bound to $(document)? ',上面由@Faust 引用:

事件委托(delegate)并不总能使您的代码更快。除非您绑定(bind)到动态元素或大量元素,否则您应该将事件处理程序直接绑定(bind)到事件发生的对象,因为这将通常效率更高。

更具体地说,以下是需要或有利的事件委托(delegate)的时间:

  • 当您在其上捕获事件的对象是动态创建/删除的,并且您仍然希望在它们上捕获事件而不必在每次创建新事件处理程序时都显式重新绑定(bind)事件处理程序。
  • 当您有很多对象都需要完全相同的事件处理程序时(其中很多至少有数百个)。在这种情况下,在设置时绑定(bind)一个委托(delegate)事件处理程序可能比绑定(bind)数百个或更多直接事件处理程序更有效。请注意,委托(delegate)事件处理在运行时的效率总是低于直接事件处理程序。
  • 当您 try catch (在文档的更高级别)发生在文档中任何元素上的事件时。
  • 当您的设计明确使用事件冒泡和 stopPropagation() 来解决页面中的某些问题或功能时。

@jfriend00 的原始回答

关于javascript - 鼠标悬停事件委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21746338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com