jQuerylive()与委托()

jQuerylive()与委托()

我在这里和网上其他地方读到了一些关于live()delegate()..然而,我没有找到我正在寻找的答案(如果这是一个欺骗,请告诉我)。

我知道livedelegate那是live不能在链中使用。我还在某个地方读到delegate在某些情况下更快(更好的性能)。

我的问题是,有什么情况你应该用live而不是delegate?

更新

我已经设置了一个简单试验看看性能上的差异。

我还增加了新的.on(),可在jQuery1.7+中找到。

结果概括了答案中所述的性能问题。

  • 不要用

    .live()

    除非jQuery版本不支持

    .delegate().

  • 不要用

    .delegate()

    除非jQuery版本不支持

    .on().

.之间的区别.live().delegate()比之间大得多delegate().on().


犯罪嫌疑人X
浏览 350回答 3
3回答

人到中年有点甜

我从不用live;我认为使用delegate如此充实以致于压倒性。唯一的好处是live的语法非常接近bind:$('a.myClass').live('click', function() { ... });delegate然而,它使用了稍微冗长的语法:$('#containerElement').delegate('a.myClass', 'click', function() { ... });然而,在我看来,这似乎更清楚地说明了实际发生的情况。你没有意识到live实际捕获的事件的示例。document;与delegate,很明显,事件捕获发生在#containerElement..你也可以做同样的事live但语法变得越来越可怕。指定要捕获的事件的上下文也可以提高性能。带着live例如,必须将整个文档上的每一次单击与选择器进行比较。a.myClass看看是否匹配。带着delegate,这只是内部的元素。#containerElement..这将明显提高性能。最后,live要求浏览器查找a.myClass 它现在是否存在. delegate只在事件被触发时查找元素,从而提供了进一步的性能优势。铌delegate使用live在幕后,所以你可以做任何事live你可以用它delegate..我的回答涉及它们,因为它们是常用的。还要注意的是live也不delegate是在现代jQuery中进行事件委托的最佳方法。新语法(从jQuery1.7开始)使用on功能。语法如下:$('#containerElement').on('click', 'a.myClass', function() { ... });

牛魔王的故事

想到了两种情况:你会用delegate在body元素,所以您只需使用live而是因为它更简单。您需要使用jQuery库的旧版本,其中delegate事件尚未实现。
打开App,查看更多内容
随时随地看视频慕课网APP