jQuery:position()和offset()之间的区别

时间:2010-07-08 09:01:14

标签: jquery positioning

position()offset()之间有什么区别?我尝试在点击事件中执行以下操作:

console.info($(this).position(), $(this).offset());

它们似乎返回完全一样......(点击的元素位于表格的表格单元格内)

3 个答案:

答案 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()更有用。

来源:http://api.jquery.com/offset/

答案 2 :(得分:-6)

这两个函数都返回一个具有两个属性的普通对象:width&amp;高度。

  

offset()指的是相对于文档的位置。

     

position()指的是相对于其父元素的位置

但是当对象的css位置为&#34;绝对&#34;这两个函数都将返回width = 0&amp;高度= 0