Eine umfassendere Antwort, die Nicks Antwort flexibler verwendet, finden Sie hier .
Eine Anpassung des relevanten Codes aus diesem Thread finden Sie unten. Diese Erweiterung erstellt im Wesentlichen eine neue Dialogeinstellung namens autoReposition, die ein wahr oder falsch akzeptiert. Der geschriebene Code ist standardmäßig auf true gesetzt. Fügen Sie dies in eine .js-Datei in Ihrem Projekt ein, damit Ihre Seiten es nutzen können.
$.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'));
}
});
});
Auf diese Weise können Sie beim Erstellen Ihres Dialogfelds auf Ihrer Seite ein "wahr" oder "falsch" für diese neue Einstellung angeben.
$(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");
}
}
});
});
Jetzt positioniert sich dieser Dialog immer neu. AutoReposition (oder wie auch immer Sie die Einstellung nennen) kann alle Dialoge verarbeiten, die keine Standardposition haben, und sie automatisch neu positionieren, wenn die Fenstergröße geändert wird. Da Sie dies beim Erstellen des Dialogfelds festlegen, müssen Sie kein Dialogfeld identifizieren, da die Neupositionierungsfunktion in das Dialogfeld selbst integriert wird. Und das Beste daran ist, dass Sie, da dies pro Dialog festgelegt ist, einige Dialoge neu positionieren können und andere dort bleiben, wo sie sind.
Gutschrift an den Benutzer scott.gonzalez in den jQuery-Foren für die vollständige Lösung.