2012-02-20 4 views
1

다음 html 구조가 있습니다. 아래의 id에서 "abcd"및 "efgh"를 ​​생성하고 고유 ID를 부여하기 위해 임의의 문자열로 추가하십시오.부모 부모 div에 대한 div 위치

<div id="MainCanvas"> 
    <div id="canvas-1"> 
     <div id="MainDiv-abcd"> 
      <div id="Manvas-abcd"> 
      </div> 
      <div id="Textdiv-abcd"> 
      </div> 
     </div> 
     <div id="MainDiv-efgh"> 
      <div id="Manvas-efgh"> 
      </div> 
      <div id="Textdiv-efgh"> 
      </div> 
     </div> 
     ...there are more of the main Divs. 
    </div> 
    <div id="canvas-2"> 
    ....same structure as above. 
    </div>  
</div> 

나의 최종 목표는 모든 범위를 반복하고 범위에 관한 정보를 얻는 것입니다.

내 코드는 다음과 같습니다. 논리

+0

당신이 결과로보고 싶습니다를? 그 위치를 어떻게 표기하고 싶니? –

+0

내가 갇혀 코드의 정확한 부분을 반영하도록 내 질문을 변경했습니다. 미리 감사드립니다. – pessi

답변

0

당신은 부모의 오프셋 (offset) 왼쪽 상단을 얻고 다음의 위치를 ​​취득하고자하는 아이의 오프셋 (offset) 왼쪽 상단을 뺄 수의 변화에 ​​열기

var counter = 1; 
$('[id^="MainDiv-"]').each(function(i) { 
     var spanId = this.id.replace("MainDiv-", "TextDiv-"); 
     if ($("#" + spanId).length) { 
      if ($("#" + spanId).text().trim().length) { 
       //here I get the canvas number which is a page in the application 
       myPages[counter] = $(this).parent().attr("id").split("-")[1]; 
       //this is where I need to get the left and top position of the span 
       //relative to the canvas 
       counter = counter + 1; 
      } 
     } 
    }); 

. 이 같은

뭔가 :

var parent = $("#canvas"), 
    child = $("#myspan"), 
    parentTop = parent.offset().top, 
    parentLeft = parent.offset().left, 
    childTop = parent.offset().top, 
    childLeft = parent.offset().left, 
    childPosTop = parentTop - childTop, 
    childPosLeft = parentLeft - childLeft; 

childPosTopcanvaschildPosLeft에 상대 오프셋 자녀의 상단을 포함해야한다는 왼쪽 canvas에 상대 오프셋 포함해야합니다.

+0

"캔버스"div 내에 "maindiv"가 많은 캔버스 div가 많기 때문에 직접 솔루션을 적용 할 수 없습니다. 그러나 각 "maindiv"에는 단지 1 개의 "manvas"와 1 개의 "span"만 있습니다. 그래서 나는 모든 maindivs를 반복해야한다 : $ ('[id^= "MainDiv -"]'). each (function (i) { – pessi

+0

@PrasadGurla : 당신은 같은' id'. – Purag

+0

@PrasadGurla, 요소 ID는 문서 내에서 고유해야합니다. –

0

DOM 노드는 및 y의 두 키를 포함하는 객체 인 속성이 offsetParent입니다.

자바 스크립트를 사용 :

var mainPosition = document.getElementById("MainDiv").offsetParent; 
alert(mainPosition.left + ", " + mainPosition.top); 

을하지만, JQuery와 덜 코드 - 더 - 팽창 방식으로이 기능을 할 수있는 래퍼가 있습니다

var mainPosition = $("#MainDiv").position(); 
alert(mainPosition.left + ", " + mainPosition.top); 
+0

첫 번째 예제는'alert (mainPosition.offsetLeft + ","+ mainPosition.offsetTop);'이어야하지만 여전히 문제가 있으며'0,0'을 경고합니다. –

+0

'offsetParent()'는 당신이 생각하는대로하지 않습니다. "포함하는 위치에 가장 가까운 (포함 계층에서 가장 가까운) 객체에 대한 참조를 반환합니다." –

+0

$ ("# MainDiv"). position()은 캔버스를 기준으로 maindiv 위치를 나타내지 만 스팬 위치가 필요합니다. – pessi

관련 문제