jQuery:有没有理由不总是使用live()进行点击和其他功能?

时间:2011-09-27 10:05:40

标签: javascript jquery performance

我真的很喜欢在jQuery中使用.live()来实现click()focus()blur()和其他交互事件。

我做了很多原型设计,所以如果我想动态添加元素,我发现它给了我很大的灵活性。出于这个原因,我发现自己被一直默认使用它的想法所吸引。这是一个好主意,还是这种糟糕的表现?

使用.live('click',function(){})会以.click(function(){})没有的方式减慢速度吗?

4 个答案:

答案 0 :(得分:1)

我认为以下回答将适用于它创建的How does jQuery .live() work?

所带来的性能影响

答案 1 :(得分:1)

关于性能,在大多数情况下使用live更好。但是live有几个陷阱,这些陷阱在http://api.jquery.com/live/#caveats的文档中有描述。

答案 2 :(得分:1)

我记得.live使用事件冒泡。

根据我的经验,我在大型文档中使用.live看到了明显的性能损失,其中包含鼠标悬停等频繁触发的事件。

jQuery Doc:

  

但是从jQuery 1.4开始,事件冒泡可以选择在DOM停止   元素“上下文”。

因此,您可以使用它来最小化性能影响。

答案 3 :(得分:1)

如果您不需要将事件冒泡到DOM的顶部,并且您知道事件将发生的上下文,那么delegate()在性能方面是更好的选择。有关this在这方面优于delegate()的原因,请参阅live() stackoverflow帖子。