live()/ delegate()是否会显着影响性能?

时间:2011-06-23 11:08:20

标签: javascript jquery

  

可能重复:
  Performance difference between jQuery's .live('click', fn) and .click(fn)

jQuery live()/ delegate()会影响性能吗?

$('a').live('click', ...

$('a').click(...< ==这会更快吗?多少钱?

2 个答案:

答案 0 :(得分:3)

答案是,它取决于:

    对于少数元素,
  • click会更快。每个元素都有一个绑定函数,但没有其他点击的开销。
  • delegate对于许多元素来说更快。只有一个事件处理程序被绑定,即使对于数百个元素也是如此。与为每个元素绑定一个函数相比,检查错过的点击的开销微乎其微。
  • delegate总是比live快。它可以限制页面中侦听事件的位置,并且在绑定时不需要遍历所有元素。

如果您追求的是硬数字,我会在一篇关于委托的文章中读到引爆点大约为3-5个元素。使用click表示小于此值,delegate表示更多。不幸的是,我不能用链接支持,但这是我一直遵循的一般规则。

答案 1 :(得分:1)

live 方法附加到文档树根,当它被触发时,它会检查目标,如果匹配,则会触发处理函数。
点击方法直接绑定到节点 你的问题没有简单的答案。有很多情况。如果你需要的只是将click事件绑定到一个元素 - 然后使用click()。例如,如果您有链接等项目列表,并且可以进行动态更改,则应使用live()。 您可以在文档中找到更多信息:live() method