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

Phi*_*enn 14 asp.net-mvc jquery asp.net-mvc-4 unobtrusive-ajax visual-studio-2012

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

升级到jQuery 1.9.1via后NuGet,我开始收到JavaScript关于删除live()函数的错误jQuery 1.9.x.

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

Microsoft JScript错误

发现这个StackOverflow答案:https://stackoverflow.com/a/14512797 并进行了4次更改~\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) {
       ...
    });
Run Code Online (Sandbox Code Playgroud)

我也物理删除jquery.unobtrusive-ajax.min.js并用于WebGrease 1.3.0从我的更新中重新生成它~\Scripts\jquery.unobtrusive-ajax.js.

但是,出于某种原因,我对不使用该.live()功能的更改并不坚持.我尝试停止运行MVC应用程序的IIS Express 8.0网站(localhost:63798).

在尝试再次运行F5以在调试模式下运行之前,还尝试执行Build-> Clean Solution,Build-> Rebuild Solution.

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

jmo*_*dyk 17

微软jQuery的不显眼的Ajax包已被固定在2.0.30116.0版本来解决这个问题.调用.live()已更改为使用.on().

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

但是,使用jQuery Migrate包的建议很适合在其他插件或您自己的代码中查找与jQuery 1.9+中的更改不兼容的问题.


Nop*_*ope 10

live() 已经在jQuery 1.9中删除了一些其他功能.

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

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

<script src="http://code.jquery.com/jquery-migrate-1.1.1.js"></script>
Run Code Online (Sandbox Code Playgroud)

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

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