2012-01-23 2 views
1

저는 div 클래스와 같은 배열을 가지고 있습니다. 각 div.so의 왼쪽 위치를 알고 싶습니다. 각 함수를 사용합니다. 나는 정확한 것을 발견 할 수 없다. 첫 번째 div 왼쪽 위치 만 보여줍니다.jQuery에서 div 배열의 왼쪽 위치를 알고 싶습니다

내 코드는 같다 ..

 jQuery.each(jQuery('.selected-item'), function(index, selectpos) { 
     selectpos = jQuery('.selected-item').position(); 
     console.log(index + ':' + selectpos.left); 
     }); 

선택 항목 클래스는 많은 div의 동일한 클래스와 나는 각 사업부의 위치를 ​​알고 싶어요.

답변

0

.each() 기능을 사용하는 방법에 익숙하지 않습니다. .each()에 대한 콜백 내에서 this은 현재 작동중인 DOM 요소를 나타냅니다. (jQuery 객체와는 다른 점에 유의하십시오.)

그래서 다음에 코드를 변경 :

jQuery.each(jQuery('.selected-item'), function(index, selectpos) { 
    selectpos = jQuery(this).position(); 
    console.log(index + ':' + selectpos.left); 
    }); 
0

당신은 $.each()의 익명 함수에서 매개 변수의 사용에있어 조금 이상한 것 같다. 이 도움이된다면보기 :

jQuery.each(jQuery('.selected-item'), function(index, element) { 
     var selectpos = jQuery(this).position(); 
     console.log(index + ':' + selectpos.left); 
    }); 

당신은 each 루프 내부의 .selected-item 모든 요소를 ​​선택하고, 대신 당신이 this와 루프의 현재 인덱스에있는 하나의 요소를 참조 할 수 있습니다. 또한 $.each()의 익명 함수는 루프의 현재 항목의 indexelement의 두 인수를 전달합니다.이 경우 .selected-item 요소의 DOM 요소가됩니다.

또한 일반 for 루프와 함께이 작업을 수행 할 수 있습니다

var $selectedItems = $('.selected-item'); 
    for (var i = 0, len = $selectedItems.length; i < len; i++) { 
     var selectpos = $selectedItems[i].position(); 
     console.log(index + ':' + selectpos.left); 
    } 

이 일의 장점이 for 루프가 더 빠르게 수행 할 것입니다. 다음은 성능 차이를 보여주는 jsperf입니다. http://jsperf.com/jquery-each-vs-for-loops/2 (테스트 편집을 무시하십시오. 누군가가 약간의 음란 코드를 게시했습니다)

관련 문제