可以找到更全面的答案,它以更灵活的方式使用尼克的答案here。
来自该线程的相关代码的改编如下。这个扩展本质上创建了一个名为 autoReposition 的新对话框设置,它接受真或假。编写的代码默认选项为 true。将其放入项目中的 .js 文件中,以便您的页面可以利用它。
$.ui.dialog.prototype.options.autoReposition = true;
$(window).resize(function () {
$(".ui-dialog-content:visible").each(function () {
if ($(this).dialog('option', 'autoReposition')) {
$(this).dialog('option', 'position', $(this).dialog('option', 'position'));
}
});
});
这允许您在页面上创建对话框时为此新设置提供“真”或“假”。
$(function() {
$('#divModalDialog').dialog({
autoOpen: false,
modal: true,
draggable: false,
resizable: false,
width: 435,
height: 200,
dialogClass: "loadingDialog",
autoReposition: true, //This is the new autoReposition setting
buttons: {
"Ok": function() {
$(this).dialog("close");
}
}
});
});
现在这个对话框总是会重新定位自己。 AutoReposition(或任何你称之为设置的东西)可以处理任何没有默认位置的对话框,并在窗口调整大小时自动重新定位它们。由于您在创建对话框时进行了设置,因此您不需要以某种方式识别对话框,因为重新定位功能已内置到对话框本身中。最好的部分是,由于这是针对每个对话框设置的,因此您可以让一些对话框重新定位自己,而其他对话框则保持在原来的位置。
感谢 jQuery 论坛上的用户 scott.gonzalez 提供完整的解决方案。