position()
和offset()
之間的區別是什麼?我試圖做一個點擊事件如下:jQuery:位置()和偏移之間的差異()
console.info($(this).position(), $(this).offset());
他們似乎正好返回相同的......(點擊的元素是一個表格單元格中的表)
position()
和offset()
之間的區別是什麼?我試圖做一個點擊事件如下:jQuery:位置()和偏移之間的差異()
console.info($(this).position(), $(this).offset());
他們似乎正好返回相同的......(點擊的元素是一個表格單元格中的表)
這取決於元素是在什麼情況下position
位置相對偏移父返回,並offset
的相對於文檔相同呢。顯然,如果文檔是偏移父項,通常情況下,這些將是相同的。
如果你有這樣一個佈局,但是:
<div style="position: absolute; top: 200; left: 200;">
<div id="sub"></div>
</div>
然後offset
爲子將是200:200,但它的position
將是0:0。
的.offset()方法允許我們檢索元素相對於文檔的當前位置。將其與.position()進行對比,其檢索當前位置相對於抵消父母。當爲了全局操作(特別是爲了實現拖放操作)而將新元素放置在現有元素的頂部時,.offset()更加有用。
如以上問什麼被視爲抵消父母?似乎在另一個div內的第一個div上調用position()並不總是返回0,0 - 即使沒有其他樣式或定位正在進行。 – Kokodoko 2014-06-23 13:49:14
jquery.offsetParent():http://api.jquery.com/offsetparent/「獲取定位的最接近的祖先元素。」 – 2015-01-12 23:20:54
這兩個函數都返回一個帶有兩個屬性的普通對象:寬度爲&高度。
offset()指相對於文檔的位置。
位置()是指相對於位置到它的父元素
但是當對象的CSS位置是「絕對」兩種功能將返回寬度= 0 &高度= 0
糾錯:偏移量和位置返回帶有左側屬性和頂部屬性的對象,而不是寬度和高度。 – 2015-11-02 12:33:05
所以抵消父母是位置設置爲絕對的第一個父母?要麼? – Svish 2010-07-08 09:48:54
@Svish:哇,我真的錯過了代碼縮進?對於編輯。是的,抵消父母是最接近的*定位*父母。即位置設置爲絕對,相對或固定(但不是靜態)的元素。這不是一個jQuery,甚至不是一個JavaScript的東西,你有相同的行爲在CSS中:如果你要'sub'絕對定位到0:0,那麼它將在抵消父母的左上角。 – 2010-07-08 10:01:29
太棒了,那完全有道理! (編輯沒問題,嘿嘿,我一直這樣做:p) – Svish 2010-07-08 10:13:05