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

前端之家收集整理的这篇文章主要介绍了在jQuery中使用live而不是bind会对性能产生影响吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

最佳答案
通常,当您的站点上有许多需要具有事件处理程序的(…)元素时,使用.live()/ .delegate()具有更好的整体性能.

将50x事件处理程序绑定到50个不同节点比将这些事件处理程序绑定到这50个元素的公共父级(基本上就是.live()所做的更为昂贵).

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

我不得不承认,我从未进行过基准测试,但在这一点上使用“实时绑定”是有意义的.但是,一旦你有多个元素绑定处理程序,它就有意义了.只有一个功能而不是N的事实对我来说似乎很方便.

猜你在找的jQuery相关文章