Una risposta più completa, che utilizza la risposta di Nick in modo più flessibile, può essere trovata qui .
Di seguito è riportato un adattamento del codice di rilevanza da quel thread. Questa estensione crea essenzialmente una nuova impostazione della finestra di dialogo chiamata autoReposition che accetta un vero o falso. Il codice come scritto imposta l'opzione su true. Mettilo in un file .js nel tuo progetto in modo che le tue pagine possano sfruttarlo.
$.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'));
}
});
});
Questo ti permette di fornire un "vero" o "falso" per questa nuova impostazione quando crei la tua finestra di dialogo sulla tua pagina.
$(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");
}
}
});
});
Ora questa finestra di dialogo si riposizionerà sempre da sola. AutoReposition (o qualunque cosa tu chiami l'impostazione) può gestire tutte le finestre di dialogo che non hanno una posizione predefinita e riposizionarle automaticamente quando la finestra viene ridimensionata. Dal momento che lo stai impostando quando crei la finestra di dialogo, non è necessario identificare una finestra di dialogo in qualche modo perché la funzionalità di riposizionamento viene incorporata nella finestra di dialogo stessa. E la parte migliore è che poiché questo è impostato per finestra di dialogo, è possibile riposizionare alcune finestre di dialogo e altre rimangono dove sono.
Ringraziamo l'utente scott.gonzalez sui forum jQuery per la soluzione completa.