2014-01-25 1 views
0

나는 이걸 조금 검색했다. 해당 부모가있는 요소의 offsetParent() 만 가져 오는 방법이 있습니까 ? 나는 모든 위치에 다른 부모를 원하지 않는다. 상대 위치에있는 부모.상대방 인 offsetParent()를 얻는 방법

나는 그것이 상대 위치가 첫 번째 위치 부모를 반환 할

$('myelement').offsetParent().css('position','relative'); 

같은 것을 생각했지만이 그것을 해결하지 않을 것이다, 나는 알고있다. 당신이 필요로하는 모든 조금 재귀, 당신은 가장 가까운 자식 컨테이너에 부모를 원하는 가정 http://jsfiddle.net/tYQPy/

:

+0

모든 부모를 얻은 다음 각 부모의 스타일을 검색하여 위치가 상대적으로 설정되어 있는지 확인해야합니다. –

답변

2

여기에 연습의 솔루션입니다. =)

function findOffsetParent(target) { 
    var parent = target.offsetParent(); 

    if (parent.css('position') === 'relative') { 
     return parent; 
    } 
    else { 
     return findOffsetParent(parent); 
    } 
} 

그 함수에 jQuery를 선택한 요소 파라미터를 공급하고, 당신의 상대 위치 jQuery를 부모의 선택을 리턴한다.

참고, 많은 요소를 반복해야하는 경우 매우 번거로울 것입니다.

는 jQuery를 사용하면 초기 상담자 루프에 대한

+0

상대 부모를 찾을 때까지 이것은 재귀 적으로 훌륭합니다. 고마워요! –

1

에 jQuery를 가지고보고 작성?

function findRelative(selector) { 
    for(var $e = $('selector'); $e.css('position') !== 'relative'; $e = $e.offsetParent()) { 
     if($e.length === 0) return null; 
    } 
    return $e; 
} 
관련 문제