为了账号安全,请及时绑定邮箱和手机立即绑定

jQuerylive()与委托()

jQuerylive()与委托()

jQuerylive()与委托()我在这里和网上其他地方读到了一些关于live()和delegate()..然而,我没有找到我正在寻找的答案(如果这是一个欺骗,请告诉我)。我知道live和delegate那是live不能在链中使用。我还在某个地方读到delegate在某些情况下更快(更好的性能)。我的问题是,有什么情况你应该用live而不是delegate?更新我已经设置了一个简单试验看看性能上的差异。我还增加了新的.on(),可在jQuery1.7+中找到。结果概括了答案中所述的性能问题。不要用.live()除非jQuery版本不支持.delegate().不要用.delegate()除非jQuery版本不支持.on()..之间的区别.live()和.delegate()比之间大得多delegate()和.on().
查看完整描述

3 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

我从不用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() { ... });


查看完整回答
反对 回复 2019-07-04
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

想到了两种情况:

  1. 你会用delegatebody元素,所以您只需使用live而是因为它更简单。

  2. 您需要使用jQuery库的旧版本,其中delegate事件尚未实现。


查看完整回答
反对 回复 2019-07-04
  • 3 回答
  • 0 关注
  • 349 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信