Uma resposta mais abrangente, que usa a resposta de Nick de uma forma mais flexível, pode ser encontrada aqui .
Uma adaptação do código de relevância desse segmento está abaixo. Esta extensão essencialmente cria uma nova configuração de diálogo chamada autoReposition que aceita um verdadeiro ou falso. O código conforme escrito padroniza a opção como verdadeiro. Coloque isso em um arquivo .js em seu projeto para que suas páginas possam aproveitá-lo.
$.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'));
}
});
});
Isso permite que você forneça um "verdadeiro" ou "falso" para esta nova configuração ao criar sua caixa de diálogo em sua página.
$(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");
}
}
});
});
Agora, esta caixa de diálogo sempre se reposicionará. A AutoReposição (ou o que quer que você chame de configuração) pode lidar com qualquer caixa de diálogo que não tenha uma posição padrão e reposicioná-la automaticamente quando a janela for redimensionada. Como você está definindo isso ao criar a caixa de diálogo, não é necessário identificar uma caixa de diálogo de alguma forma, porque a funcionalidade de reposicionamento torna-se integrada à própria caixa de diálogo. E a melhor parte é que, como isso é definido por diálogo, você pode fazer com que alguns diálogos se reposicionem e outros permaneçam onde estão.
Agradecemos ao usuário scott.gonzalez nos fóruns da jQuery pela solução completa.