【问题标题】:jQueryUI cannot open modal dialog boxjQueryUI 无法打开模态对话框
【发布时间】:2012-11-07 21:38:12
【问题描述】:

我正在编写一个对 python 后端的 ajax 调用,该后端会为模式对话框生成 HTML,然后弹出所述对话框。但是,最近我在这里遇到了问题。我的 JS 前端代码(到目前为止)如下。

var deletegroup = function(group){
        $.ajax({
                url: "ajax.py/get_orphaned_networks",
                data: {group: group},
                success: function(result){
                        if (result == 0){
                                alert("Group does not contain networks, no networks will be deleted.");
                        } else {
                                $("#dgf_modal").html(result);
                                $("#dgf_modal").css('visibility', 'visible');
                                $("#dgf_modal").dialog({
                                        modal: true,
                                        closeOnEscape: false,
                                        resizable: false,
                                        draggable: false,
                                        title: "Deleting Group",
                                        width: 500,
                                        height: 500,
                                        buttons: {
                                                "Yes" : function(){
                                                        alert("Well, okay then.");
                                                        $("#dgf_modal").dialog("close");
                                                },
                                                "Cancel" : function(){
                                                        $("#dgf_modal").dialog("close");
                                                }
                                        },
                                        close: function(){
                                                $("#dgf_modal").html("");
                                                $("#dgf_modal").css('visibility', 'hidden');
                                                $(this).dialog("destroy");
                                        }
                                });
                                $("#dgf_modal").dialog("open");
                        }
                },
                error: function(){
                        setlongmessage("An error has occurred. Contact your system administrator.");
                        $("#dgf_status").html("<img src='images/error.png' alt='An error occured.'/>");
                        setTimeout(function(){$("#dgf_status").html("");}, 3000);
                }
        });
}

我的应用程序的另一部分中也有类似的代码,它工作得很好。但是,有了这个我收到以下错误:

错误:无法在初始化之前调用对话框上的方法; 试图调用方法'open'

抛出新错误(msg);

jquery.js(第 477 行)

编辑:如果我在 div 上调用 dialog("open") 或 dialog("close") ,我会收到相同的错误消息。同样的堆栈跟踪,唯一改变的错误是它试图调用方法'close'而不是'open'。

我正在使用最新版本的 jQueryUI 和 jQuery,因为我认为更新它们可能会解决这个问题。没有骰子。也许我在这个函数的某个地方搞砸了,但我确实知道 ajax 调用正在返回它应该返回的正确 HTML。

一切都检查出来了——我确实有我的 div,ID 为 dgf_modal,而且效果很好。不完全确定我现在搞砸了什么。

【问题讨论】:

  • NITPICK:一遍又一遍地做$("#dgf_modal") 是不好的做法。它很慢。将其存储到变量中并引用它。
  • @epascarello:一旦代码实际工作,我会担心这一点,但很好。谢谢。

标签: javascript jquery jquery-ui


【解决方案1】:

没有理由调用 open,在创建对话框时使用 autoOpen 选项。

【讨论】:

  • 感谢您的洞察力。但是,它似乎并没有解决我所有的问题。我会在帖子中更新更多信息。
【解决方案2】:

嗯,我想通了。毕竟这是我的 AJAX 调用,返回两个 id 为“dgf_modal”的 div。当我自动生成表格单元格而不是在最后我实际关闭表格时,不小心把它扔进了我的 for 循环。

总之,我是个白痴。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2011-06-24
    • 1970-01-01
    相关资源
    最近更新 更多