我发现了一些有关livebind的问题,但这些问题都与性能无关。我认为标题非常清楚,因此在jQuery中使用live会对性能产生影响吗?我之所以这样问,是因为使用live时每次触发事件时都必须进行查找,而我认为这可能会对性能产生负面影响。还是jQuery在做一些神奇的事情来加快这一步,例如监听在向DOM中添加某些东西时触发的某种事件?

最佳答案

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

将50x事件处理程序绑定(bind)到50个不同的节点比将一个事件处理程序绑定(bind)到这50个元素的公共(public)父节点要昂贵得多(这基本上就是.live()所做的事情)。

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

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

10-05 20:39
查看更多