Более полный ответ, который использует ответ Ника более гибким образом, можно найти здесь .
Ниже приводится адаптация актуального кода из этой ветки. Это расширение, по сути, создает новую настройку диалогового окна, называемую autoReposition, которая принимает значение true или false. Код, как написано, по умолчанию устанавливает значение 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 (или как вы его называете) может обрабатывать любые диалоги, у которых нет позиции по умолчанию, и автоматически перемещать их при изменении размера окна. Поскольку вы устанавливаете это при создании диалога, вам не нужно каким-то образом идентифицировать диалог, потому что функция изменения положения встроена в сам диалог. И самое приятное то, что, поскольку это устанавливается для каждого диалога, вы можете изменить положение некоторых диалогов, а другие останутся на своих местах.
Благодарим пользователя scott.gonzalez на форумах jQuery за полное решение.