การรีเฟรชหน่วยความจำของฉันในการตั้งค่าตำแหน่งฉันมาที่นี่สายฉันไม่รู้ว่าใครจะเห็น แต่ -
ฉันไม่ชอบการตั้งตำแหน่งโดยใช้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'});<- ไม่ดี เห็นได้ชัดว่าหากค่าตำแหน่งเป็นสตริงคุณต้องรวมหน่วยหรือจะไม่มีผลกระทบ