可能重复:
Performance difference between jQuery's .live('click', fn) and .click(fn)
jQuery live()/ delegate()会影响性能吗?
$('a').live('click', ...
$('a').click(...
< ==这会更快吗?多少钱?
答案 0 :(得分:3)
答案是,它取决于:
click
会更快。每个元素都有一个绑定函数,但没有其他点击的开销。delegate
对于许多元素来说更快。只有一个事件处理程序被绑定,即使对于数百个元素也是如此。与为每个元素绑定一个函数相比,检查错过的点击的开销微乎其微。delegate
总是比live
快。它可以限制页面中侦听事件的位置,并且在绑定时不需要遍历所有元素。如果您追求的是硬数字,我会在一篇关于委托的文章中读到引爆点大约为3-5个元素。使用click
表示小于此值,delegate
表示更多。不幸的是,我不能用链接支持,但这是我一直遵循的一般规则。
答案 1 :(得分:1)
live 方法附加到文档树根,当它被触发时,它会检查目标,如果匹配,则会触发处理函数。
点击方法直接绑定到节点
你的问题没有简单的答案。有很多情况。如果你需要的只是将click事件绑定到一个元素 - 然后使用click()。例如,如果您有链接等项目列表,并且可以进行动态更改,则应使用live()。
您可以在文档中找到更多信息:live() method