position()
和offset()
之间有什么区别?我尝试在点击事件中执行以下操作:
console.info($(this).position(), $(this).offset());
它们似乎返回完全一样......(点击的元素位于表格的表格单元格内)
答案 0 :(得分:202)
这取决于元素所处的上下文。position
返回相对于偏移父级的位置,offset
相对于文档执行相同的 。显然,如果文档是偏移父项(通常是这种情况),则这些将是相同的。
如果你有这样的布局,那么:
<div style="position: absolute; top: 200; left: 200;">
<div id="sub"></div>
</div>
然后 sub 的offset
将为200:200,但其position
将为0:0。
答案 1 :(得分:28)
.offset()方法允许我们检索元素相对于文档的当前位置。将此与 .position()进行对比,后者检索相对于偏移父项的当前位置。将新元素放置在现有元素之上进行全局操作时(特别是实现拖放),.offset()更有用。
答案 2 :(得分:-6)
这两个函数都返回一个具有两个属性的普通对象:width&amp;高度。
offset()指的是相对于文档的位置。
position()指的是相对于其父元素的位置
但是当对象的css位置为&#34;绝对&#34;这两个函数都将返回width = 0&amp;高度= 0