Більш вичерпну відповідь, яка використовує відповідь Ніка більш гнучко, можна знайти тут .
Нижче наведено адаптацію коду відповідності з цієї теми. Це розширення по суті створює нове налаштування діалогу під назвою 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");
}
}
});
});
Тепер це діалогове вікно завжди буде змінити себе. Авторепозиція (або як ви називаєте налаштування) може обробляти будь-які діалогові вікна, у яких немає положення за замовчуванням, і автоматично змінювати їх, коли розмір вікна змінюється. Оскільки ви встановлюєте це під час створення діалогу, вам не потрібно якось ідентифікувати діалог, оскільки функція перестановки стає вбудованою у сам діалог. І найкраща частина полягає в тому, що оскільки це встановлено для кожного діалогу, ви можете самі змінити деякі діалоги, а інші залишатись там, де вони є.
Заслуга користувача scott.gonzalez на форумах jQuery за повне рішення.