Bạn có thể tìm thấy câu trả lời toàn diện hơn, sử dụng câu trả lời của Nick theo cách linh hoạt hơn tại đây .
Dưới đây là một sự điều chỉnh của mã liên quan từ chuỗi đó. Phần mở rộng này về cơ bản tạo ra một cài đặt hộp thoại mới có tên là autoReposition chấp nhận giá trị true hoặc false. Mã như được viết mặc định tùy chọn là true. Đặt nó vào tệp .js trong dự án của bạn để các trang của bạn có thể tận dụng nó.
$.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'));
}
});
});
Điều này cho phép bạn cung cấp "true" hoặc "false" cho cài đặt mới này khi bạn tạo hộp thoại trên trang của mình.
$(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");
}
}
});
});
Bây giờ hộp thoại này sẽ luôn tự định vị lại. AutoReposition (hoặc bất kỳ thứ gì bạn gọi là cài đặt) có thể xử lý bất kỳ hộp thoại nào không có vị trí mặc định và tự động định vị lại chúng khi cửa sổ thay đổi kích thước. Vì bạn đang thiết lập điều này khi tạo hộp thoại, bạn không cần phải xác định hộp thoại bằng cách nào đó vì chức năng định vị lại được tích hợp sẵn trong hộp thoại. Và phần tốt nhất là vì điều này được đặt cho mỗi hộp thoại, bạn có thể có một số hộp thoại tự định vị lại và những hộp thoại khác vẫn ở nguyên vị trí của chúng.
Tín dụng cho người dùng scott.gonzalez trên diễn đàn jQuery cho giải pháp hoàn chỉnh.