position()和 和有什么不一样offset()?我尝试在点击事件中执行以下操作:
position()
offset()
console.info($(this).position(), $(this).offset());
而且它们似乎返回完全相同…(单击的元素位于表格中的表格单元格内)
它们是否相同取决于上下文。
position返回 相对于偏移父{left: x, top: y}对象的对象 __
position
{left: x, top: y}
offset返回一个 相对于文档{left: x, top: y}的对象。 __
offset
显然,如果文档是偏移父级(通常是这种情况),这些将是相同的。偏移父级是“最近定位的包含元素” 。
例如,使用此文档:
<div style="position: absolute; top: 200; left: 200;"> <div id="sub"></div> </div>
然后$('#sub').offset() 将是{left: 200, top: 200},但它.position()会是{left: 0, top: 0}。
$('#sub').offset()
{left: 200, top: 200}
.position()
{left: 0, top: 0}