2012-12-22 3 views
4

안녕하세요, 저는 자바 스크립트에서 배열을 만드는 것이 가능한지 궁금합니다. $(ele).css('margin');을 사용하는 일련의 요소의 여백을 가져 오는 변수가 있습니다. 이 문자열은 0px 0px 0px 0px 문자열을 반환합니다. 여기서 왼쪽 속성은 애니메이션이 적용되었는지 여부를 확인하기를 원합니다. -= 왼쪽.배열을 채우기 위해 javascript/jQuery 익명 함수

나는 비슷한 기능을 할 수 있지만 더 좋은 방법이 있어야한다는 것을 알고 있습니다. 나는이 문제를 단순화하는 방법을 완전히 확실하지 않다

var marginsLeft = new array(); 
$(ele).each(function(i){ 
    var r = $(i).css('margin').split(" "); 
    marginsLeft[i]=r[3]; 
}); 

,하지만 난 그것을 사전에 가능 :) 덕분에 확신 : 여기 내 예입니다.

var marginsLeft = $(ele).map(function() { 
    return parseInt($(this).css('margin-left'), 10); 
}).get(); 

업데이트 : 정기적 배열을 원하는 경우 @undefined에 의해 지적, 당신은 또한 결과에 .get를 호출해야

+0

시도해 보셨습니까? 그래, 그래야 해. 그러나 단지'css (margin-left ")'를 얻는 것이 더 쉬울 수도 있습니다 ... – Bergi

+0

첫 번째 매개 변수 또는 ['$ .each'] (http : //api.jquery .com/each /)는 요소 집합의 인덱스입니다. 요소를 얻으려면'this' 또는 두 번째 매개 변수를 사용하십시오. – mgibsonbr

답변

6

당신은 $.map을 사용할 수 있습니다 사용할 수 있습니다 . 그렇지 않으면 jQuery 랩핑 된 배열을 갖게된다. 배열과 유사하므로 많은 컨텍스트에서는 배열로 사용할 수 있지만 다른 배열에서는 사용할 수 없습니다 (특히 네이티브 메서드가 없을 수 있음).

또한 결과를 숫자로 변환하려면 parseInt (글자를 무시하고 숫자 만 사용)을 사용하여 base (10)를 명시해야한다는 것을 기억하십시오.

+0

내가 뭘 찾고 있었는지 고마워! 고맙습니다 :) – sourRaspberri

+2

'map'은 jQuery 래핑 된 배열을 반환합니다. 기본 배열을 얻으려면'get' 메소드를 사용해야합니다. – undefined

+0

nice,'map'은 저를 위해서 새로워졌습니다, 고마워, 고마워요 .- – bukart

2

당신은 css('margin-left') 대신

+0

이제 나는 어리 석다. LOL하지만 내 질문은, 거기에 함수를 사용하여 배열을 만드는 방법입니다. 'a = 새로운 배열 (function (r) {return 'blah';});'. PHP 함수 array_map과 비슷한 정렬? – sourRaspberri

+0

mgibsonbr에서 답변을 참조하십시오, 그것을 권장합니다 – bukart

3

docs for .each() 살펴보기 : 콜백 함수의 첫 번째 매개 변수는 인덱스이고, 배열 요소 (DOM 노드)는 두 번째 매개 변수 또는 this 값으로 액세스 할 수 있습니다. 그래서, 당신은 또한 .map() method 살펴있을 수 있습니다

var marginsLeft = []; // literal shortcut for "new Array()" 
$(ele).each(function(i, el){ 
    marginsLeft[i] = $(el).css('margin-left'); 
}); 

를 사용하지만, 그 배열 대신 jQuery를 래퍼 개체를 반환합니다.