我有以下代码:
$("#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 ......为什么?)
答案 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中。有人可以告诉我原因吗?