Nickの回答をより柔軟な方法で使用する、より包括的な回答は、こちらにあります。
そのスレッドからの関連性のあるコードの改作を以下に示します。この拡張機能は本質的に、trueまたはfalseを受け入れる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'));
}
});
});
これにより、ページにダイアログを作成するときに、この新しい設定に「true」または「false」を指定できます。
$(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(または設定と呼ぶもの)は、デフォルトの位置を持たないダイアログを処理し、ウィンドウのサイズが変更されたときに自動的に再配置できます。ダイアログを作成するときにこれを設定しているため、再配置機能がダイアログ自体に組み込まれるようになるため、ダイアログを識別する必要はありません。そして最良の部分は、これがダイアログごとに設定されるため、いくつかのダイアログを自分自身で再配置させ、他のダイアログをそのままの位置に残すことができるということです。
完全なソリューションについては、jQueryフォーラムのユーザーscott.gonzalezに感謝します。