我有几个想要以相同方式运行的对话框。我创建了一个空对话框,根据单击的按钮通过 ajax 加载包含各种内容的对话框,然后打开对话框。打开时我检查窗口高度,如果对话框高度大于窗口高度,我将高度设置为窗口大小减去 20px,否则对话框高度是自动的。我在窗口调整大小事件上运行相同的函数,并将它定位在窗口的中心。当在对话框中单击将数据附加到对话框末尾的某些按钮时,我也会运行该函数。一切都很好,除了它打破了使用拖动手柄手动调整对话框的大小。我正在使用 jQuery 1.9.1 和 jQuery UI 1.9.2。代码基本上是这样的:
//Create the dialog
$("div.myDialogContainer").dialog({
title:"Whatever",
autoOpen:false,
modal:true,
resizable:true,
width:850,
open:function(event, ui){$.positionDialog();}
});
//Load content and open the dialog
$("#openButton").on("click", function(){
$.ajax({url:"myPath", success:function(data){
$("div.myDialogContainer").html(data).dialog("open");
$("div.myDialogContainer #addMoreData").on("click", function(){
$("div.myDialogontainer div.loadedContent").append("<div>More Data</div>");
});
}
});
});
//Position the dialog on window resize
$(window).resize(function(){$.positionDialog();});
//check dialog height and center on screen
(function(){$.positionDialog=function(){
var myDialog = $("div.myDialogContainer:visible");
var availableHeight = $(window).height() - 20;
var dialogHeight = myDialog.parent().height();
if(dialogHeight>=availableHeight){
myDialog.dialog("option", "height", availableHeight );
}
else{
myDialog.dialog("option", "height", "auto" );}
myDialog.dialog("option", "position", "center");
}
})(jQuery);
我在这里遗漏了什么还是这只是 jQuery/jQuery UI 的错误/限制?