2012-07-04 3 views
16

부모 요소를 기준으로 한 요소의 거리/오프셋/위치를 얻는 방법을 알고 싶습니다. 얻을 jQuery의 position() 기능성 달리 부모 요소를 기준으로 한 요소 거리를 가져옵니다.

가 위치 오프셋 부모 의 상대 위치의, I는 거리가 함유/부모 엘리먼트의 상부로부터의 같은 소자의 (가정) 안정 위치를 얻을 필요가있다.

예 :

<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

이 그것을 할 오프셋 (offset). Parent.offset()을 마우스 오른쪽 - 아이 (수직 위치에) 부모 다음에 오는 경우

var child_top = $("#parent_div").scrollTop() + $("#child_div").offset().top 
+0

작동; 하지만 원래의 코드베이스에서는 이상한 일이 발생합니다. 자식 오프셋은 항상 부모 요소의 스크롤 위치에 따라 변경됩니다 (높이가 고정되어 있으며 자식 요소의 결합 된 높이보다 작음). –

+2

@VictorS 내 생각에 position() 메소드의 offset() 메소드를 변경해보십시오. – daniloquio

+0

정확! 그래서'.position()'이 스크롤 된 부모 요소 내의 위치에 따라 자식 요소의 값을 변경하기 때문에 질문을 던졌습니다. WTF! –

0

parent.offset() - child.offset()?

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

그것은 Child.offset() 것입니까? –

+0

네, 맞습니다. 두 가지를 모두 문서와 관련시켜야한다고 생각하십시오. – sabithpocker

5

이 코드는 나를 위해 작동 : jQuery를 사용

는()

관련 문제