升级jQuery 1.10.2后会出现一些问题

时间:2013-09-23 16:04:28

标签: javascript jquery asp.net-mvc-4

我已经从jQuery 1.7.1更新到1.10.2,现在下面的问题出现在jquery.unobtrusive-ajax.js中:

$("a[data-ajax=true]").live("click", function (evt) {
    evt.preventDefault();
    asyncRequest(this, {
        url: this.href,
        type: "GET",
        data: []
    });
});

问题在于现场。它说$("a[data-ajax=true]")不接受方法或属性live

如何解决这个问题?我应该升级jquer.unobtrusive-ajax.js还是这样的?

4 个答案:

答案 0 :(得分:7)

请阅读文档,live已删除,并替换为.on()

$(document).on("click", "a[data-ajax=true]", function (evt) {

document是容纳动态内容的容器。

答案 1 :(得分:3)

方法.live已在1.7版中弃用,之后删除,您应该使用.on

查看文档:

http://api.jquery.com/live/

如果您使用依赖于live的插件,那么我将继续使用1.7版

答案 2 :(得分:3)

了解jQuery Migrate插件也很好。它来自jQuery本身,可直接从他们的GitHub获得。

该插件的目的是“简化从旧版jQuery的过渡。该插件恢复不推荐使用的功能和行为,以便旧代码仍可在jQuery 1.9及更高版本上正常运行。使用未压缩的开发版本为了诊断兼容性问题,它将在控制台上生成警告,您可以使用它来识别和修复问题。

来源:jQuery download page

答案 3 :(得分:1)

使用.on()

$(document).on("click", "a[data-ajax=true]", function (evt) {

请参阅版本1.7中的.live()deprecated,并在1.9中删除。

  

从jQuery 1.7开始,不推荐使用.live()方法。使用.on()来   附加事件处理程序。旧版jQuery的用户应该使用   .delegate()优先于.live()。