on()委托VS委托()

时间:2013-06-14 08:44:26

标签: javascript jquery events

$(document).on('click', '#target') VS. $('body').delegate('click', '#target');

正如我所看到的,上述两个都是我想做的工作,但我想知道这件事的最佳做法是什么。

一个比另一个更有效吗?

3 个答案:

答案 0 :(得分:0)

delegate()被jQuery 1.7取代on()。正如the documentation所述:

  

从jQuery 1.7开始,.delegate()已被.on()方法取代。但是,对于早期版本,它仍然是使用事件委派的最有效方法。有关事件绑定和委派的更多信息,请参见.on()方法。

答案 1 :(得分:0)

不,只是在最新版本的jQuery中(如果我没有错误1.8+).on方法抑制.delegate方法。因此,如果你使用1.8- jQuery版本,你必须使用.delegate()来实现几个目标,在1.8+上你只需要.on()方法

http://api.jquery.com/on/

http://api.jquery.com/delegate/

答案 2 :(得分:0)

可能会有轻微的性能差异,因为显然只会调用另一个。该库不包含两个单独的实现,它们执行相同的操作。然而,这种差异并不重要,因为与其他工作相比,另一个调用是如此少的工作,实际的实现可能会从一个版本变为另一个版本。

相反,建议不要使用live方法,因为它的使用不直观,并且因为delegate(或on)允许您限制委派的范围。与使用delegate相同的事情相比,on方法没有这样的缺点。

图书馆的作者朝着在更少的方法中包含更多功能的方向前进,因此作者的建议是将on用于所有内容。但是,如果您认为使用delegate更清楚地显示代码的意图,则不必遵循该建议。