$(document).on('click', '#target')
VS. $('body').delegate('click', '#target');
正如我所看到的,上述两个都是我想做的工作,但我想知道这件事的最佳做法是什么。
一个比另一个更有效吗?
答案 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()
方法
答案 2 :(得分:0)
可能会有轻微的性能差异,因为显然只会调用另一个。该库不包含两个单独的实现,它们执行相同的操作。然而,这种差异并不重要,因为与其他工作相比,另一个调用是如此少的工作,实际的实现可能会从一个版本变为另一个版本。
相反,建议不要使用live
方法,因为它的使用不直观,并且因为delegate
(或on
)允许您限制委派的范围。与使用delegate
相同的事情相比,on
方法没有这样的缺点。
图书馆的作者朝着在更少的方法中包含更多功能的方向前进,因此作者的建议是将on
用于所有内容。但是,如果您认为使用delegate
更清楚地显示代码的意图,则不必遵循该建议。