การรีเฟรชหน่วยความจำของฉันในการตั้งค่าตำแหน่งฉันมาที่นี่สายฉันไม่รู้ว่าใครจะเห็น แต่ -
ฉันไม่ชอบการตั้งตำแหน่งโดยใช้css()
บ่อยครั้ง แต่ก็ดี ฉันคิดว่าวิธีที่ดีที่สุดคือใช้position()
setter ของ jQuery UI ตามที่ xdazz สังเกต อย่างไรก็ตามถ้า jQuery UI เป็นด้วยเหตุผลบางอย่างไม่ใช่ตัวเลือก (ยังเป็น jQuery) ฉันชอบสิ่งนี้:
const leftOffset = 200;
const topOffset = 200;
let $div = $("#mydiv");
let baseOffset = $div.offsetParent().offset();
$div.offset({
left: baseOffset.left + leftOffset,
top: baseOffset.top + topOffset
});
นี้มีประโยชน์จากการไม่โดยพลการตั้งค่า$div
ของแม่เพื่อวางตำแหน่งสัมพัทธ์ (สิ่งที่ถ้า$div
'ผู้ปกครองเป็นตัวเองในตำแหน่งที่แน่นอนภายในสิ่งอื่นใด) ผมคิดว่ากรณีขอบเท่านั้นที่สำคัญคือถ้า$div
ไม่ได้มีoffsetParent
ไม่แน่ใจว่ามันจะกลับมาdocument
, null
หรือสิ่งอื่นทั้งหมด
offsetParent
มีให้บริการตั้งแต่ jQuery 1.2.6 บางครั้งในปี 2008 ดังนั้นเทคนิคนี้จึงใช้ได้ในขณะนี้และเมื่อมีการถามคำถามเดิม
$("#mydiv").css({top: '200px', left: '200px', position:'absolute'});
<- ดี$("#mydiv").css({top: '200', left: '200', position:'absolute'});
<- ไม่ดี เห็นได้ชัดว่าหากค่าตำแหน่งเป็นสตริงคุณต้องรวมหน่วยหรือจะไม่มีผลกระทบ