【问题标题】:Including unobtrusive-ajax making all scripts stop working包括 unobtrusive-ajax 使所有脚本停止工作
【发布时间】:2013-03-23 18:42:33
【问题描述】:

我在通过 Bundling in .NET MVC4 绑定 JavaScript 文件时遇到问题

我正在添加以下脚本以捆绑在我的代码中

bundles.Add(new ScriptBundle("~/bundle").Include("~/Scripts/jquery-1.9.1.min.js","~/Scripts/kui/kendo.all.min.js", "~/Scripts/kui/kendo.grid.min.js", "~/Scripts/jquery.validate.min.js"));

到目前为止一切正常,但是当我将jquery.unobtrusive-ajax.min.js 添加到列表时:

bundles.Add(new ScriptBundle("~/bundle ").Include("~/Scripts/jquery-1.9.1.min.js","~/Scripts/jquery.unobtrusive-ajax.min.js","~/Scripts/kui/kendo.all.min.js", "~/Scripts/kui/kendo.grid.min.js", "~/Scripts/jquery.validate.min.js"));

所有脚本都停止工作(验证、Kendo UI 等),我通过 Visual Studio JS 调试器得到了这个异常: Microsoft JScript runtime error: Object doesn't support this property or method

在生成的捆绑脚本文件中突出显示以下代码:

n("a[data-ajax=true]").live("click",function(n){n.preventDefault(),r(this,{url:this.href,type:"GET",data:[]})}),n("form[data-ajax=true] input[type=image]").live( ….

继续前进,没有任何东西(JavaScript/Jquery 相关)可以工作了。

JS文件中的var或函数名可能有冲突吗?但是很难在一个长的缩小和捆绑的脚本文件中追踪。 请帮忙。

【问题讨论】:

  • 我认为 .live 在 jquery 1.9 版本中被贬低了。尝试删除实时功能并检查

标签: javascript jquery asp.net-mvc bundling-and-minification


【解决方案1】:

这是因为 live 函数在 jQuery v1.9 中已被移除。

您可以尝试将.live 更改为.on

或者,尝试更新 jQuery Unobtrusive Ajax NuGet 包。

【讨论】:

  • NuGet 上的最新版本是 2.0.20710.0 最后更新于 August 11, 2012,这比 jQuery v1.9 版本早,所以我认为更新它不会起作用?
  • @SajjadHashmi 我刚刚在一个测试 MVC 4 项目上测试了更新 jQuery Unobtrusive Ajax NuGet 包,它可以工作。新版本为2.0.30116.0,2013年2月18日更新,使用.on函数。
【解决方案2】:

试试这样:

替换

$("a[data-ajax=true]").live("click",function(n){});

$("a[data-ajax=true]").on("click",function(n){});

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2014-12-16
    • 2023-03-20
    相关资源
    最近更新 更多