14

使用ASP.NET MVC 4NuGet管理包。

升级到jQuery 1.9.1via后,NuGet我开始收到JavaScript有关删除live().jQuery 1.9.x

我在 VS.NET 中按 F5 以调试模式运行,进入登录页面,得到以下信息:

错误 Microsoft JScript

找到这个 StackOverflow 答案:https ://stackoverflow.com/a/14512797并对~\Scripts\jquery.unobtrusive-ajax.js.

我的~\Scripts\jquery.unobtrusive-ajax.js

    $(document).on("click", "a[data-ajax=true]", function (evt) {
       ...
    });
    $(document).on("click", "form[data-ajax=true] input[type=image]", function (evt) {
       ...
    });
    $(document).on("click", "form[data-ajax=true] :submit", function (evt) {
       ...
    });
    $(document).on("submit", "form[data-ajax=true]", function (evt) {
       ...
    });

我还物理删除jquery.unobtrusive-ajax.min.js并用于WebGrease 1.3.0从我更新~\Scripts\jquery.unobtrusive-ajax.js的 .

但是,由于某种原因,我不使用该.live()功能的更改并没有坚持。我尝试停止 VS.NET 在其下运行 MVC 应用程序的 IIS Express 8.0 网站 (localhost:63798)。

还尝试在按 F5 再次以调试模式运行之前执行 Build->Clean Solution、Build->Rebuild Solution。

如果有人以前经历过这种情况并有任何见解,我将不胜感激。先感谢您。

4

2 回答 2

17

Microsoft jQuery Unobtrusive Ajax包已在版本 2.0.30116.0 中修复以解决此问题。调用.live()更改为使用.on()

尝试升级 NuGet 包以获取最新版本。

但是,使用 jQuery Migrate 包的建议是一个很好的方法,可以在其他插件或您自己的代码中发现与 jQuery 1.9+ 中的更改不兼容的问题。

于 2013-03-12T22:07:33.123 回答
10

live()已在 jQuery 1.9 中与其他一些功能一起被删除。

如果您需要支持已删除的功能,您还需要添加包含已删除功能的 jQuery 迁移文件。

添加类似于下面的参考应该包括您需要的所有功能:

<script src="http://code.jquery.com/jquery-migrate-1.1.1.js"></script>

调试模式下的迁移文件还会向您的控制台添加警告,在您使用任何已删除的功能时通知您。这将帮助您在进行过程中慢慢替换它们,最终您可以仅使用 jQuery 1.9 及更高版本来删除迁移文件引用。

有关迁移到 jQuery 1.9 的所有详细信息,请参阅以下 jQuery 博客文章。

于 2013-03-12T21:19:42.520 回答