【问题标题】:UI Dialog modal windows work as modal window on the second clickUI Dialog 模态窗口在第二次单击时用作模态窗口
【发布时间】:2012-02-20 02:32:19
【问题描述】:

我的 Jquery UI 对话框有问题,当我第一次单击按钮时,它确实显示对话框但不在模态对话框中,但是当你第二次单击它时,它会正确显示为模态对话框

$('.ajax').live('click', function ()
{
    var url = "/home/test";
    var dialog = $("#dialog");

    $( "#dialog" ).dialog({
        height: 140,
        title:"Title",
        modal: true
    });


    if ($("#dialog").length == 0)
    {
        dialog = $('<div id="dialog"></div>').appendTo('body');
    }
    $.ajax(
        {
            url: url,
            beforeSend: function (jqXHR, settings)
            {
                //show an animated gif
            },
            complete: function (jqXHR, textStatus)
            {
                //hide the animated gif
            },
            success: function (data, textStatus, jqXHR)
            {
                dialog.dialog().html(data);
            },
            error: function (jqXHR, textStatus, errorThrown)
            {
                dialog.dialog().html("An error occured...");
            }
        });

    return false;
});

这里是按钮点击事件的代码

<button class="ajax">open dialog</button>

查看此链接以测试上述代码

http://jsfiddle.net/jRPfu/13/

【问题讨论】:

  • 功能代码请看这里link

标签: jquery-ui jquery dialog window modal-dialog


【解决方案1】:

我会这样做。

  1. 你声明了一个变量dialog,所以之后使用它

  2. 直接检查是否使用dialog.length 找到#dialog 元素。如果它是空的,请创建您的标记

  3. 使用选项 autoOpen: false 初始化您的对话框。这样,对话框将一劳永逸地初始化,但仍将保持隐藏状态。

  4. 在您的 ajax 回调中,调用 open 方法以显示带有dialog.dialog('open') 的对话框。顺便说一句,设置对话框的内容然后打开它似乎更符合逻辑。

进一步阅读:

这是修改后的代码:

var dialog = $("#dialog");

if (dialog.length == 0) {

    dialog = $('<div id="dialog"></div>').appendTo('body');

    dialog.dialog({
        height: 140,
        title: "Title",
        modal: true,
        autoOpen: false
    });

}

$.ajax({
    url: url,
    ...
    success: function(data, textStatus, jqXHR) {
        dialog.html(data).dialog('open');
    },
    error: function(jqXHR, textStatus, errorThrown) {
        dialog.html("An error occured...").dialog('open');
    }
});

DEMO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    相关资源
    最近更新 更多