创建单击事件时,我尽力只将它们绑定一次 - 通常绑定到预期触发事件的所有节点共享的父节点。然而,我很好奇,鼠标悬停事件的最佳实践是什么:当结果是鼠标悬停时不断触发事件时,将事件绑定到父级是否仍然有意义?最有效的做法是什么?
为了解决这个问题,我将解释/引用这个答案中的一些相关注释:'所有 jquery 事件都应该绑定到 $(document) 吗?',@Faust 上面引用了这一点:
事件委托并不总是能让你的代码更快。除非您绑定到动态元素或大量元素,否则您应该将事件处理程序直接绑定到事件发生的对象,因为这通常会更有效。
更具体地说,以下是需要事件委托或具有优势的时候:
- 当您捕获事件的对象是动态创建/删除的时,您仍然希望捕获它们的事件,而不必在每次创建新事件处理程序时显式重新绑定事件处理程序。
- 当您有很多对象都需要完全相同的事件处理程序时(其中数量至少有数百个)。在这种情况下,在设置时绑定一个委托事件处理程序可能比绑定数百个或更多直接事件处理程序更有效。请注意,委托事件处理在运行时的效率始终低于直接事件处理程序。
- 当您尝试捕获(在文档中的较高级别)文档中任何元素上发生的事件时。
- 当您的设计明确使用事件冒泡和 stopPropagation() 来解决页面中的某些问题或功能时。
@jfriend00 的原始答案
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)