在jQuery中使用live而不是bind会对性能产生影响吗?

Tom*_*son 5 jquery

我发现了一些关于live和的问题bind,但没有一个是关于性能的.我认为标题很清楚,live在jQuery 中使用会有性能影响吗?为什么我要问这是因为在使用时每次触发事件时都必须进行查找live,我的想法是这可能会以负面的方式影响性能.或者jQuery正在做一些加速这个的神奇的东西,比如听一些东西被添加到DOM时被触发的事件?

jAn*_*ndy 4

一般来说,当您的网站上有大量需要事件处理程序的 (...) 元素时,.live()它具有更好的整体性能。.delegate()

.live()将 50 个事件处理程序绑定到 50 个不同的节点比仅将一个事件处理程序绑定到这 50 个元素的公共父元素(基本上就是这样做)的成本更高。

现在有人可能会说,“好吧,太好了,但这伴随着开销事件冒泡”,这是绝对正确的。这就是为什么.delegate()被引入的原因。.live()始终将处理程序绑定到document.body显然是标记中任何子节点的父节点。.delegate()但是需要一个参数,您可以在其中指定“最小公分母”,这意味着您希望拥有事件处理程序的那些元素共享的最接近的父节点。这实际上将开销减少到零。

我必须承认,我(还)从未对使用“实时绑定”有意义的时间点进行过基准测试。但话又说回来,一旦您有多个元素要绑定处理程序,它就有意义了。只有一个函数而不是 N 个这一事实对我来说似乎很方便。