该live()方法在jQuery 1.7中已弃用.jQuery文档现在推荐
使用
.on()附加的事件处理程序.旧版jQuery的用户应该.delegate()优先使用.live().
我知道如何on和delegate工作,但我不明白为什么他们是更好的.live()更简单,更容易使用.
有没有理由live被弃用?其他方法如何更好?如果我继续使用,会发生什么不好的事live吗?
Tat*_*nit 33
请参阅此处的一些说明:
http://www.ultimatewebtips.com/why-jquery-live-is-a-bad-option-to-use/(网站似乎已关闭)
引用:
您不能使用.live()可重用的小部件.
.stopPropagation() 不能用于直播.
.live() 比较慢
.live() 不可链接.
更进一步的美妙之.on()处在于它可以很好地简化所有事件:http://api.jquery.com/on/
呃,你知道关于api的链接,看看它是如何.on()工作的:)
引用:
.on()方法将事件处理程序附加到jQuery对象中当前选定的元素集.从jQuery 1.7开始,.on()方法提供了附加事件处理程序所需的所有功能.有关从旧的jQuery事件方法转换的帮助,请参阅.bind(),. delegate()和.live().要删除与.on()绑定的事件,请参阅.off().要附加仅运行一次然后自行删除的事件,请参阅.one()
Mat*_*ens 10
live() 效率低下有两个原因:
$('selector').live(),jQuery首先必须选择所有元素.但是,在调用时live(),它只需要jQuery对象的选择器(存储在其中.selector),并且实际上不使用任何所选元素.因此,首先选择所有匹配元素然后不使用它们有点浪费.on()并将delegate()目标选择器作为参数,这意味着事先没有选择目标元素,并且仅在触发事件时才进行测试.live()默认情况下绑定在该document级别,因此所有事件都需要在整个DOM中冒泡.您可以通过指定上下文来缩小范围$(selector, context).live(),但最好使用on()或delegate()为此.在编写新代码时,强烈建议使用最新和最好的on()代替delegate()和不赞成使用live().但是,我不认为支持live()会很快被删除(如果有的话),因为很多脚本都依赖它.此外,使用live()over 没有真正的缺点on(),因为在jQuery源本身live()定义为:
live: function( types, data, fn ) {
jQuery( this.context ).on( types, this.selector, data, fn );
return this;
}
Run Code Online (Sandbox Code Playgroud)