2013-08-20 2 views
3

.each() CSS 값을 루프하려고합니다. 색인을 얻는 방법을 알고 있습니다. Fiddle 나는 브라우저가 800 픽셀 아래에있을 때 jQuery 코드는 내가 변화를 왼쪽 위치를 작성하기 때문에 브라우저가 800 픽셀 이상으로 다시 크기를 조정할 때, 왼쪽 값을 저장하기위한 것입니다 아이디어는 내가 다시 의지 할jQuery foreach 루프, 여러 CSS 값?

var pos = $('.sublayer_1 div').css('left'); 

    function adjustAttempt3() { 

     $(".sublayer_1 div").each(function (index) { 
      alert(index + ":" + pos); 
     }); 

    } 

기본 왼쪽 값으로.

FYI css는 솔루션이 아닙니다. 왼쪽 값은 데이터베이스에서 가져온 것이므로 동적입니다.

그래서 각 왼쪽 위치를 저장하고 if 문에 사용하려고합니다.

여기에 샘플 HTML 코드가 나와 있습니다. 자세한 내용은 fiddle을 참조하십시오.

<div class="sublayer_1"> 
    <div style="position: absolute; left: 100px;">Coffee</div> 
    <div style="position: absolute; left: 300px;">More Coffee</div> 
</div> 

사이드 참고 : 문이 크기 조정 기능에 호출되는 함수에 싸여 경우 오리지널 왼쪽 위치

if((w) > 800) { 
     $Q('#main').css({'margin-top': mar }); 
     $Q('.sublayer_1 div, .sublayer_1 img').css(pos); 
     alert(pos) 
    } 
    else { 
     $Q('.sublayer_1 div, .sublayer_1 img').css({'left': w/2}); 
     $Q('#main').css({'margin-top': w_d + m_d });   
    } 

이 저장하여 무슨 뜻인지에더. if((w) > 800) 문에있는 변수는 디폴트 값을 선택하는 함수 외부에있는 반면 else 문 내의 변수는 동적이되도록 resize 함수 내에 있습니다.

관례대로 IDK는이 속도가 어떻게 느껴지지만 방금 나에게 왔고 작동하지만 각각의 왼쪽 가치를 얻는 데 어려움을 겪고 있습니다. 그래서 내가 위에 한 일을 묻습니다.

+1

(http://api.jquery.com/css/) : * "a의 값을 취득합니다 ** 일치 요소 집합의 첫 번째 요소 **에 대한 스타일 속성 "* –

+0

무엇? 나는 정말로 그 질문이 무엇인지 여기에서 이해하지 못한다. 요소의 CSS 속성을 반복하고 싶습니까? 'each() '의 각 반복이 {left :'100px '}'또는 어떤 것을 통과시키는 곳? – SmokeyPHP

+0

나는 당신이 요구하는 것을 정말로 말할 수 없다. 하지만 당신은'this'를 찾고 있습니까? 그것은'each' 루프 안에있는 요소들에 접근하는 방법입니다.'$ (this)'는 jquery 확장 요소에 접근합니다. –

답변

3
나는 각 요소에 대해 .data를 통해 원래의 CSS 값을 저장 할

:

$(".sublayer_1 div").each(function() { 
    $(this).data('origLeft', $(this).css('left')); 
}); 

동적으로 HTML을 생성하는 경우, 이 호출을 할 필요가 없으면 값을 HTML에 직접 저장할 수 있습니다.

<div style="position: absolute; left: 100px;" data-orig-left="100px">Coffee</div> 

그럼 당신은 나중에 그것을 얻을 수면 : [`.css` 문서]에서

$(".sublayer_1 div").each(function() { 
    var left = $(this).data('origLeft'); 
}); 
+0

아, 이건 @gvee가 위에 말한 것을 이해합니다. 나는 그것을 좋아합니다. 이것은 잘 묶여 있어야하며 유연성을 허용하는 정말 좋은 방법입니다. 브라보 – Mike

1

each에 전달 된 함수 내에서 $(this)을 사용하여 현재 요소를 검색 한 다음 left 값을 가져옵니다.

function adjustAttempt3() { 

    $(".sublayer_1 div").each(function (index) { 
     alert(index + ":" + $(this).css("left")); 
    }); 
} 

JsFiddle :http://jsfiddle.net/vGQXT/6/

+0

그 경우,'pos.eq (index)'대신'$ (this)'를 사용하지 않을까? –

+0

@FelixKling Good Point –

+0

네, 그곳에 사용하는 것을 몰랐습니다. 솔직히'$ (this)'를 사용해야 할 때가 언제인지 모르겠습니다. 함수 내부에서 함수를 사용할 때 함수의 요소에 대해 뭔가를하려고 할 때 (제대로 말했는지 확실하지는 않지만) 루프를 돕는다는 것을 알지 못했습니다. 아룬 (Arun)은 "선택자를 만족시키는 첫 번째 요소의 왼쪽 값을 가져온다"고 말하면서 "$ (this)"감각을 조금 더 좋게 만들었지 만 여전히 더 많이 사용할 수 있다고 확신합니다. – Mike

1

당신이이 선택을 만족하는 첫 번째 요소의 left 값을 가져옵니다 var pos = $('.sublayer_1 div').css('left');을 말할 때, 당신은 당신이 현재 루프 요소의 위치를하려는 each 루프에 필요, 그래서

이 있어야한다

function adjustAttempt3() { 
    $(".sublayer_1 div").each(function (index) { 
     var pos = $(this).css('left'); 
     alert(index + ":" + pos); 
    }); 
} 


//Attempt 3 
adjustAttempt3(); 
,

데모 : Fiddle

+0

당신은'$ (this)'. 이것에 대한 나의 유일한 관심사는 원래의 왼쪽 값을 저장하는 방법입니다.이 주석에 자신을 설명하는 것이 쉽지는 않지만, OP에 resize 함수가 있습니다. 기본값 이외의 값을 저장해야합니다. 크기를 재조정 해, 이해가 되니? LOL을 변수 또는 함수로 작성하고 함수를 내 크기 조정 함수에 전달할 수 있습니까? – Mike

+0

@Mike FelixKing이 이미 그 부분에 대답했다고 생각합니다. –

+0

오, 그래, 두 가지를 조합 한 것이 아니라는 것을 깨달았습니다. 응답이 너무 빨라서 내 머리를 감싸 주려고했습니다. 나는 그가 나의 모든 질문에 답해 주신 덕분에'.data'와'$ (this)'를 사용하신 것을 보았습니다. 고맙습니다. 감사합니다. 나는이 모든 정보를 벼락치기로하고 어느 날 전문가가되고 싶다. :) – Mike

1

당신이 그것을 얻기 위해 반복하지 않는 한 당신은 첫 번째 divleft 위치를 얻고있다.

이 시도 :

function adjustAttempt3() { 

    $(".sublayer_1").find('div').each(function (index) { 
     var pos = $(this).css('left'); 
     alert(index + ":" + pos); 
    }); 


} 

라이브 예 : http://jsfiddle.net/vGQXT/3/

+0

그래, 이건 Aruns의 대답과 비슷하다. 누가 처음인지는 모르겠지만, 나는 바닥으로 스크롤하여 이것을 통과했을 것이다. 고마워. – Mike