jQuery:位置()和偏移()之间的区别

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

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

他们似乎返回完全一样的…(被点击的元素是在一个表格单元格中)

这取决于元素在什么上下文中position返回相对于偏移父级的位置,并且offset 相对于文档是相同 。 很明显,如果文件是抵消的父母,这往往是这样的,这些将是相同的。

如果你有这样的布局,但是:

  <div style="position: absolute; top: 200; left: 200;"> <div id="sub"></div> </div> 

那么suboffset是200:200,但是它的position是0:0。

.offset()方法允许我们检索元素相对于文档的当前位置。 将它与.position()进行比较 ,它将检索相对于偏移父级当前位置 。 当为了全局操作(特别是为了实现拖放)在现有的元素上放置新的元素时,.offset()是更有用的。

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

这两个函数都返回一个具有两个属性的普通对象:宽度和高度。

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

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

但是当对象的css位置是“绝对”时,这两个函数都会返回width = 0和height = 0