jQuery 1.9.0 的 live 函数是什么?

13

jquery 1.9.0中没有live()函数,但jquery.unobtrusive.ajax.js已经使用了这个函数。

我应该使用旧版本的jquery还是其他方法?

4个回答

12

自1.7版本起已被弃用,自1.9版本起已被移除。请改用on()

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

$("#myButton").on("click", function(){
    alert("Clicked");
});

这里有很多好的信息:

http://www.elijahmanor.com/2012/02/differences-between-jquery-bind-vs-live.html

关于Unobtrusive Ajax,您需要包含早于v1.9版本的jQuery版本,其中仍存在live()
如果您正在引用MS CDN,请注意。

http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.unobtrusive-ajax.js http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.unobtrusive-ajax.min.js

如果这些内容没有直接引用jQuery,那么只需在您的代码中包含1.8版本而不是1.9版本。


那么,我应该更改所有jquery.unobstrusive.ajax.js的内容吗? - AliRıza Adıyahşi
jQuery.on()比.live()更高效。如果可能的话,请寻找更新版本的jQuery.unobtrusive库或寻找替代品。 - thaJeztah
1
.on() 不是 .live() 的替代品。现在你所拥有的相当于 .click() - Blender
@thaJeztah 我正在使用最新版本的jQuery.unobtrusive,但是出现了错误“Object [object Object] has no method 'live'”。 - AliRıza Adıyahşi
1
@AliRızaAdıyahşi 通常我会建议联系库的作者,但是经过快速的谷歌搜索,我意识到这是微软框架的一部分?我有点惊讶他们如此缓慢地采用更新版本的jQuery(.live()已经被标记为弃用了一段时间)。然而,很有可能许多人会遇到同样的问题,有人已经创建了一个修补版的Ajax.onontrusive,您可以使用它,直到微软发布新版本。 - thaJeztah
显示剩余5条评论

8

.live()已被替换为.on()的事件委托语法:

$('#parent').on('click', '.child', function() {
  ...
});

#parent在调用选择器时应该存在,所以如果你的元素位于顶层,请使用document作为父元素。


2
jquery.migrate添加了旧版功能。这意味着jquery.unobtrusive.ajax.js可以按预期工作。
请参考官方博客引用jquery.migrate库,也有一个nuget包,但显然您需要更新您的模板/布局视图。

http://blog.jquery.com/2013/01/31/jquery-migrate-1-1-0-released/

http://nuget.org/packages/jQuery.Migrate/

JavaScript控制台突出显示了问题...
JQMIGRATE: 日志记录已激活 JQMIGRATE: jQuery.fn.live()已弃用 JQMIGRATE: jQuery.fn.andSelf()已被jQuery.fn.addBack()替换 JQMIGRATE: jQuery.clean()已弃用

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接