คำตอบที่ครอบคลุมมากขึ้นซึ่งใช้คำตอบของนิคในทางที่มีความยืดหยุ่นมากขึ้นสามารถพบได้ที่นี่
การปรับรหัสความเกี่ยวข้องจากเธรดนั้นอยู่ด้านล่าง ส่วนขยายนี้จะสร้างการตั้งค่าไดอะล็อกใหม่ที่เรียกว่า autoReposition ซึ่งยอมรับว่าเป็นจริงหรือเท็จ โค้ดตามที่เขียนจะกำหนดค่าเริ่มต้นให้ตัวเลือกเป็นจริง ใส่ลงในไฟล์. 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 สำหรับโซลูชันที่สมบูรณ์