ASP.NET MVC 4:无法修改jQuery Unobtrusive Ajax

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

通过NuGet升级到jQuery 1.9.1后,我开始在jQuery 1.9.x删除有关删除live()函数的JavaScript错误。

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

Microsoft JScript错误

发现这个StackOverflow答案: https : ~\Scripts\jquery.unobtrusive-ajax.js进行了4次更改。

我的~\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。

如果有人以前经历过这个并且有任何见解,我将非常感激。 先感谢您。

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

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

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

live()已在jQuery 1.9中删除,还有一些其他function。

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

添加类似于下面的引用应该包括您需要的所有function:

  

调试模式下的迁移文件还会向控制台添加警告,以便在使用任何已删除的function时通知您。 这将帮助您逐步替换它们,最终只能使用jQuery 1.9及更高版本删除迁移文件引用。

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

  • jQuery Core 1.9升级指南
  • jQuery 1.9和2.0 – TL; DR版
  • jQuery 1.9.1发布
  • jQuery Migrate 1.1.1发布
  • 在GitHub上迁移:将旧的jQuery代码迁移到jQuery 1.9+