错误:TypeError:$(...)。dialog不是函数

时间:2014-09-24 12:09:44

标签: javascript jquery jquery-ui-dialog

我遇到了将对话框作为基本功能运行的问题。这是我的jQuery源代码导入:

<script type="text/javascript" src="scripts/jquery-1.9.1.js"></script>
<script type="text/javascript" src="scripts/jquery-ui-1.11.1.js"></script>
<script type="text/javascript" src="scripts/json.debug.js"></script>

HTML:

<button id="opener">open the dialog</button>
<div id="dialog1" title="Dialog Title" hidden="hidden">I'm a dialog</div>

<script type="text/javascript">
    $("#opener").click(function() {
            $("#dialog1").dialog('open');
    });
</script>

从帖子周围看起来像是一个图书馆导入问题。我下载了JQuery UI Core,Widget,Mouse和Position依赖项。

任何想法?

7 个答案:

答案 0 :(得分:75)

请务必插入完整版的jQu​​ery UI。您还应首先启动对话框:

&#13;
&#13;
$(function () {
  $( "#dialog1" ).dialog({
    autoOpen: false
  });
  
  $("#opener").click(function() {
    $("#dialog1").dialog('open');
  });
});
&#13;
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
 
<script src="https://code.jquery.com/ui/1.11.1/jquery-ui.min.js"></script>

<link rel="stylesheet" href="https://code.jquery.com/ui/1.11.1/themes/smoothness/jquery-ui.css" />

<button id="opener">open the dialog</button>
<div id="dialog1" title="Dialog Title" hidden="hidden">I'm a dialog</div>
&#13;
&#13;
&#13;

答案 1 :(得分:8)

如果您从_Layout.cshtml页面注释掉以下代码,则模式弹出窗口将开始工作:

    </footer>

    @*@Scripts.Render("~/bundles/jquery")*@
    @RenderSection("scripts", required: false)
    </body>
</html>

答案 2 :(得分:6)

如果出于某种原因加载了两个版本的$.noConflict(true)(不建议使用),则从第二个版本调用jQuery会将全局范围的JQuery变量返回给第一个版本的变量

有些时候,$.noConflict();个文件的旧版本(或非稳定版本)可能会出现问题

解决方案使用<script src="other_lib.js"></script> <script src="jquery.js"></script> <script> $.noConflict(); jQuery( document ).ready(function( $ ) { $("#opener").click(function() { $("#dialog1").dialog('open'); }); }); // Code that uses other library's $ can follow here. </script>

    public Style CorrectValueStyle
{
    get
    {
        Style returnStyle = new Style(typeof(GridViewCell));
        returnStyle.Setters.Add(new Setter(GridViewCell.BorderBrushProperty, new SolidColorBrush(Colors.Black)));
        return returnStyle;
    }
    set
    {

    }
}

答案 3 :(得分:1)

将jQueryUI更改为版本 1.11.4 ,并确保jQuery不会添加两次。

答案 4 :(得分:0)

我刚刚经历了这一行:

$('<div id="editor" />').dialogelfinder({

我收到了错误&#34; dialogelfinder不是一个功能&#34;因为另一个组件在加载新版本后插入一个调用来加载旧版本的JQuery(1.7.2)。

一旦我评论出第二次加载,错误就消失了。

答案 5 :(得分:0)

以下是摆脱此问题所需的完整脚本列表。 (确保文件存在于给定的文件路径中)

   <script src="@Url.Content("~/Scripts/jquery-1.8.2.js")" type="text/javascript">
    </script>
    <script src="@Url.Content("~/Scripts/jquery-ui-1.8.24.js")" type="text/javascript">
    </script>
    <script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript">
    </script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript">
    </script>
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript">
    </script>

并在_Layout.cshtml中包含以下css链接,以获得时尚的弹出窗口。

<link rel="stylesheet" type="text/css" href="../../Content/themes/base/jquery-ui.css" />

答案 6 :(得分:0)

我有一个类似的问题,在我的情况下,问题是不同的(我使用Django模板)。

JS的顺序是不正确的(我知道这是你检查的第一件事,但我几乎可以肯定,事实并非如此,但确实如此)。在调用jqueryUI库之前调用了调用该对话框的js。

我正在使用Django,因此继承了一个模板并使用{{super.block}}继承了块中的代码以及模板。我不得不在块的末尾移动{{super.block}}来解决问题。调用该对话框的js在Django的admin.py中的Media类中声明。我花了一个多小时来搞清楚。希望这有助于某人。