Jquery对话显示:盲目,隐藏:掉落;只工作一次

时间:2011-08-18 22:22:07

标签: jquery internet-explorer jquery-ui jquery-dialog

我有以下代码:

$("#dialog").dialog({
    height: 360,
    width: 630,
    modal: true,
    autoOpen: false,
    show: 'blind',
    hide: 'drop',
    resizable: false,
    dialogClass: 'noFloat'
});

$("#openDiag").click(function() {

    $("#dialog").dialog('open');

    $.ajax({
        type: "POST",
        url: "setHsdSegment.jsp",
        dataType: "html",
        resizable: false,
        //data:"name="+name+"&age="+age,
        success: function(data) {
            $("#response").html(data);
        }
    });
});

我面临的问题是,show和hide只能运行一次。如果我再次单击按钮(#openDialog),则只显示半透明屏幕而不显示对话框。

有趣的是,只有当“隐藏”是“掉落”并且除了“掉落”之外的其他任何内容时,才会发生这种情况。但是当节目“掉落”而隐藏是其他任何东西时,一切都很好。

当隐藏“丢弃”时,节目是否必须“掉落”?

编辑:这只发生在IE中。 (像往常一样IE导致问题。:D ......为什么?)

3 个答案:

答案 0 :(得分:1)

这是jQuery UI中的一个已知错误: http://bugs.jqueryui.com/ticket/5615

快速解决方法是销毁并重新创建对话框:

var $dlg = $("#dialog");
var dlgOptions = $dlg.dialog("option");
$dlg.dialog("destroy");
$dlg.dialog(dlgOptions);

它会断开对话框离开屏幕并在下次显示时忘记返回(除非"显示"设置为" drop"这样做恰恰相反)。

答案 1 :(得分:0)

这个演示似乎工作得很好:http://jsfiddle.net/william/mQkH7/

也许尝试升级/降级你的jQuery UI。

答案 2 :(得分:0)

我找到了解决方法。不确定这是否是最佳方式,但它确实有效。 它如下:

 $("#openDiag").click(function(){
  $('#dialog').dialog('destroy');
   $("#dialog").dialog({
                    height: 360,
                    width: 630,
                    modal: true,
                    autoOpen: true,
                    show: 'slide',
                    hide: 'drop',
                    resizable: false,
                    dialogClass: 'noFloat',
                    buttons: { "Ok": function() { $(this).dialog("close"); 

                                                } }
                });

似乎对于IE,我需要在创建新对话框之前销毁对话框插件。我一开始就保留了“破坏”,因为我想保持结束效果。我在这里缺少的是在我销毁之前检查插件是否存在。但它仍然没有错误;我不知道为什么。

但是这仍然没有回答这个问题,为什么问题首先存在,只针对这个特定的组合而且只在IE中。有人可以告诉我原因吗?