2012-07-04 1195 views
16

我想知道如何獲取元素相對於其父元素的距離/偏移量/位置。獲取元素相對於其父元素的距離

不同於jQuery的position()功能,這得到的相對於父的位置偏移位置,我需要獲得(假設)穩定的元素的位置,因爲它是從含/父元素的頂部的距離。

例如:

<div id="parent"> 
    <div id="pos1">Has a position of 0px from top of containing parent el.</div> 
    <br style="height:20px;"> 
    <br style="height:20px;"> 
    <div id="pos2">Has a position of 40px from top of containing parent el.</div> 
</div> 

所以,無論什麼父元素添加到文檔中,pos1pos2位置的位置將被報告是相同的,因爲他們不相對於他們的父母改變元素...

這可能嗎?

回答

37

這應做到:

$('#pos1').offset().top - $('#pos1').parent().offset().top - $('#pos1').parent().scrollTop() 
+0

作品;但是我的原始代碼庫發生了一些奇怪的事情:根據父元素(具有固定高度,小於子元素的組合高度)的父元素的滾動位置,子偏移總是在變化。 –

+2

@VictorS我看到了,請嘗試更改position()方法的offset()方法 – daniloquio

+0

準確!這就是爲什麼我問這個問題的原因,因爲'.position()'也會根據子元素在滾動父元素中的位置更改它的值。 WTF! –

0

Parent.offset() - child.offset()?

使用jQuery偏移()

+0

如果孩子在父母之後(在垂直定位中),那麼它會是Child.offset() - Parent.offset()是吧? –

+0

是的你是對的,只是採取兩個相對於文件的想法。 – sabithpocker

5

此代碼對我的作品。

var child_top = $("#parent_div").scrollTop() + $("#child_div").offset().top 
相關問題