Javascript live()/delegate()是否显著影响性能?

Javascript live()/delegate()是否显著影响性能?,javascript,jquery,Javascript,Jquery,可能重复: jQuery live()/delegate()是否会显著影响性能 $('a').live('click'),… $('a')。单击(…答案是这取决于: 单击会加快少数元素的速度。每个元素都有一个绑定函数,但其他单击没有开销 delegate对于许多元素来说速度更快。即使对于数百个元素,也只有一个事件处理程序被绑定。与为每个元素绑定一个函数相比,检查错过的单击的开销很小 delegate总是比live快。它可以限制在页面中侦听事件的位置,并且在绑定时不需要迭代所有元素 如果你在

可能重复:

jQuery live()/delegate()是否会显著影响性能

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


$('a')。单击(…
答案是这取决于:

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

如果你在寻找硬性数字,我在一篇关于委托的文章中读到,临界点大约是3-5个元素。使用
单击
可以获得更少的数据,使用
委托
可以获得更多的数据。不幸的是,我不能用链接来支持这一点,但这是我一直遵循的一般规则。

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