【问题标题】:JQuery UI modal dialog: cannot call methods prior to initializationJQuery UI 模式对话框:无法在初始化之前调用方法
【发布时间】:2014-02-21 14:15:58
【问题描述】:

我有以下几点:

$(function(){
    $('#dialog').dialog({ modal: true, buttons: { "Ok": function () { $('#dialog').dialog("close"); } } });
}

我尝试了许多不同形式的语法,但都没有成功。如果我使用 $(this).dialog("close"); 我会收到 JS 错误,抱怨在 init 之前调用方法,但是当我使用 $('#dialog').dialog("close")几乎可以工作。对话框在左上角弹出,按钮无法正确呈现 - 只是一个无文本的圆圈,在单击时 会关闭 - 只有当我给弹出框焦点时,模态叠加出现。

在我的 ASP.NET MVC 视图中:

@{
    if (Model.response)
    {
        <div id="dialog" title="@Model.responseDialog.title"><p>@Model.responseDialog.content</p></div>
    }
} 

【问题讨论】:

    标签: c# jquery asp.net asp.net-mvc jquery-ui


    【解决方案1】:

    好的,您的代码按预期工作。

    这里有几件事可以尝试解决这个问题。

    检查您的 css 和 javascript 文件

    你需要相关的js和css文件,而不是重复或不同版本的jQuery。

    您可以通过确保所有删除现有的并用 cdn 版本替换它们来测试这一点:

    <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css" />
    <script src="//code.jquery.com/jquery-1.10.2.js"></script>
    <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
    

    调用对话框函数在引用之后

    确保您的对话框函数位于上述引用之后。

    【讨论】:

    • 我删除了所有对旧 jQuery 1.7.1 的 MVC 引用,在我的共享布局视图中,我有你概述的引用(jQuery 1.10.2 和 jQuery UI 1.9.1 我这样做了仍然包含这些 @Styles.Render("~/Content/css")@Scripts.Render("~/bundles/modernizr")
    • 我也会尝试删除它们,看看您是否可以隔离问题。它也可能与其中之一发生冲突。
    • 我也是这么想的。我删除了它们,只引用了主要的 Site.css 无济于事。
    • 我要检查的唯一其他事情是,您只有一个 id="dialog" 的 div,而且您肯定在同一个 div 上调用 close(从您的问题来看,您是)。它没有缓存它,开始停止 Web 服务器以防万一。失败了,我很困惑。
    • 我有很多#dialog div,但它们都在不同的页面上,ID 应该是这样。我将尝试针对一个特定的 ID 名称 - 编辑呸,不走运。
    猜你喜欢
    • 2012-11-11
    • 1970-01-01
    • 2013-03-08
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 2014-06-10
    相关资源
    最近更新 更多