【发布时间】:2013-03-13 06:07:33
【问题描述】:
使用ASP.NET MVC 4 和NuGet 管理包。
在通过NuGet 升级到jQuery 1.9.1 后,我开始收到JavaScript 关于删除jQuery 1.9.x 中的live() 函数的错误。
我在 VS.NET 中按 F5 以调试模式运行,进入登录页面,得到以下信息:
找到这个 StackOverflow 答案:https://stackoverflow.com/a/14512797 并对~\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)。
还尝试执行 Build->Clean Solution,Build->Rebuild Solution,然后按 F5 再次以调试模式运行。
如果有人以前经历过这种情况并有任何见解,我将不胜感激。先感谢您。
【问题讨论】:
-
您的观点中引用了哪些库?
-
@DaveA 在那个视图上,
/Scripts/jquery-1.9.1.js,/Scripts/jquery.unobtrusive-ajax.js,/Scripts/jquery.validate.js,/Scripts/jquery.validate.unobtrusive.js -
您是否尝试过清除缓存或从其他浏览器访问?或者,使用 chrome,调出开发人员工具并单击 /Scripts/jquery.unobstrusive-ajax.js(未缩小)以查看文件源以验证您的更改是否正在推送。我认为有些东西正在保留旧副本。
-
有使用最新的 Unobtrusive Ajax 包吗?我的 MVC4 项目中的最新版本(2.0.30116.0)使用 .on(),而不是 .live()
-
@Tommy 感谢您的建议和洞察力,我很感激。我想不知何故,自从我使用 NuGet 然后更新了不显眼的 ajax 之后,NuGet 就挂在了一个纯副本上。我按照 jmoerdyk 的回答解决了我的问题。
标签: jquery asp.net-mvc asp.net-mvc-4 visual-studio-2012 unobtrusive-ajax