0

我有以下代码:

$("#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);
        }
    });
});

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

有趣的是,这只发生在 hide 是 'drop' 并且 show 是除了 'drop' 之外的任何东西时。但是当节目是“放弃”并且隐藏是其他任何东西时,一切都很好。

当隐藏是“下降”时,节目是否必须“下降”?

编辑:这仅在 IE 中发生。(像往常一样 IE 引起了问题。:D ...为什么?)

4

3 回答 3

1

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

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

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

它接缝对话框离开屏幕并且忘记在下次显示时返回(除非“显示”设置为“丢弃”,这完全相反)。

于 2012-02-12T11:45:35.067 回答
0

在这个演示中似乎工作正常:http: //jsfiddle.net/william/mQkH7/

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

于 2011-08-19T12:51:41.450 回答
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 中。有人可以告诉我原因吗?

于 2011-08-19T15:01:26.707 回答