8

我在使用 jquery 时遇到了一些跨浏览器问题,经过一些研究后,我发现我的应用程序正在使用 jquery 1.8.11,或者至少我认为是这样。

我的项目是一个带有 c# 的 MVC4 asp.net 应用程序。

实际上我正在尝试禁用-启用一些按钮,它在 IE 上运行良好,但在 chrome / firefox / safari 中却不行。

<ul class="ui-grid-d">
<li class="ui-block-a"><a id="MostrarDetallePedido" class="ui-btn ui-btn-up-a" disabled="disabled" href="/Documentos/Docs/DocsDetalle?StrIdDocumento=01500___00000000000000041" data-role="button" data-theme="a" data-ajax="false"><span aria-hidden="true" class="ui-btn-inner"><span class="ui-btn-text">Detalle</span></span></a></li>
<li class="ui-block-b"><a id="ItemCondiciones" class="ui-state-disabled ui-btn ui-btn-up-b" disabled="disabled" href="/Documentos/Docs/DocsDetalle?StrIdDocumento=01500___00000000000000041" data-role="button" data-theme="b" data-ajax="false"><span aria-hidden="true" class="ui-btn-inner"><span class="ui-btn-text">Condiciones</span></span></a></li>
<li class="ui-block-c"><a id="ItemEliminar" class="ui-state-disabled ui-btn ui-btn-up-c" disabled="disabled" href="/Documentos/Docs/DocsDetalle?StrIdDocumento=01500___00000000000000041" data-role="button" data-theme="c" data-ajax="false"><span aria-hidden="true" class="ui-btn-inner"><span class="ui-btn-text">Eliminar</span></span></a></li>
<li class="ui-block-d"><a id="ItemAdiciones" class="ui-state-disabled ui-btn ui-btn-up-d" disabled="disabled" href="/Documentos/Docs/DocsDetalle?StrIdDocumento=01500___00000000000000041" data-role="button" data-theme="d" data-ajax="false"><span aria-hidden="true" class="ui-btn-inner"><span class="ui-btn-text">Adiciones</span></span></a></li>
<li class="ui-block-e"><a id="ItemComponentes" class="ui-state-disabled ui-btn ui-btn-up-e" disabled="disabled" href="/Documentos/Docs/DocsDetalle?StrIdDocumento=01500___00000000000000041" data-role="button" data-theme="e" data-ajax="false"><span aria-hidden="true" class="ui-btn-inner"><span class="ui-btn-text">Componentes</span></span></a></li> 
</ul>​

我试过了

$('#ItemEliminar').addClass('ui-disabled');​

这种方式到

$('#ItemEliminar').button({ disabled: false }).button('enable').button('refresh');

我在http://jsfiddle.net/9386M/1/上用我们自己的脚本做了一些测试,它在 jquery 1.8.2 上运行良好。

好吧,我只需要知道如何更改我的 jquery 库,我正在查看 _Layout.cshtml 但我找不到对我的 jquery 库的任何引用。

在脚本文件夹我找到 jquery-ui-1.8.11.js jquery-ui-1.8.11.min.js jquery-1.6.4.js jquery-1.6.4.min.js

4

2 回答 2

11

有两种方法可以做到这一点:

  1. 右键单击您的解决方案,选择“管理 NuGet 包...”,在打开的对话框中转到“更新”并更新 jQuery。

  2. 从那里转到/App_Start/BundleConfig.cs并更新 jQuery 参考。您还需要将适当版本的 jQuery 库放入该/Scripts/文件夹。

而且您始终可以在所有解决方案中搜索“jQuery”字符串(按Ctrl++并在“查找范围”组合框中选择“整个解决方案” ShiftF

于 2012-11-19T22:40:28.960 回答
3

MVC4 使用捆绑。

转到 App_Start => 打开 BunlingConfig.cs

您将看到如下内容:

   // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725
    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));

        bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
                    "~/Scripts/jquery-ui-{version}.js"));

        bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.unobtrusive*",
                    "~/Scripts/jquery.validate*"));

       // and bunch of other bundles

    }

这里的第一行为 jQuery 创建了一个包。

您可以将其更改为以下内容:

     bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-1.8.2.min.js"));

如果要使用 CDN,请确保已下载库,如下所示:

        bundles.UseCdn = true;  

        const string jqueryCdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.2.min.js";

        bundles.Add(new ScriptBundle("~/bundles/jquery",
                                     jqueryCdnPath).Include("~/Scripts/jquery-{version}.js"));

您还可以为您的文件创建捆绑包。您可以在此处阅读更多信息http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4

在布局文件中,它们的使用方式如下:

      @Scripts.Render("~/bundles/jquery")

希望这可以帮助。

于 2012-11-19T22:49:09.507 回答