2012-10-10 2 views
0

그래서 애니메이션이 가능한 객체가 있습니다.이 obj1을 호출 할 수 있습니다. 다른 오브젝트는 애니메이션 전후에 동적으로 생성 될 수 있으므로 obj1의 현재 여백을 기반으로 한 여백 왼쪽 위치를 원합니다.Jquery 객체를 애니메이트 한 다음 새로운 margin-left를 기반으로 다른 객체를 만듭니다.

이것은 관련 코드 조각입니다. 기이 한 일은 경고가있는 곳에서 작동하지만 알림을 꺼내면 남은 여백은 기본적으로 스타일 시트에 있던 것입니다. Timeout은 이전 obj가 새로운 위치에 애니메이션을 완성 할 때까지 새로운 obj가 생성되지 않도록 보장하는 것입니다.

if(!rounds.match12) { 
    setTimeout(function() { 
    createMatchup(matchups[6].winner, matchups[7].winner, 12, false); //this creates a new matchup and appendsTo current container 
    var pos = $('#matchup5').css('margin-left'); 
    alert(pos); 
    $('#matchup12').css('margin-left' , pos); 
    alert($('#matchup12').css('margin-left')); 
    $('#matchup12').css('margin-left' , '-=195'); 
    alert($('#matchup12').css('margin-left')); 
    rounds.match12 = true; 
    },1500); 
} 

답변

0

전체 코드를 보지 않고서는 내 시간차가 애니메이션과 동기화되지 않을 가능성이 높습니다. jQuery 애니메이션은 항상 정확하지 않고 타임 아웃과 밀리 초의 차이가 없으며 일관성없는 값을 제공하거나 실패 할 수 있습니다. 다음과 같이 시간 제한 대신 $.animate() 콜백을 사용해보십시오 :

// replace 'fast' with a millisecond timeout if desired // 
$('selector').animate(marginLeft: 'X', 'fast', function(){ 
    // dynamically create and position new elements here 
}); 

을 나는 희망이 도움이!

+0

불행히도 저에게는 도움이되지 않습니다. 애니메이션은 여러 가지 것에 적용될 수있는 고유 한 기능입니다. 새로운 객체의 생성은 반드시 애니메이션과 관련이있는 것은 아닙니다. 나는 정말로 새로운 객체 마진을 남겨진 다른 객체들을 기반으로두고 싶습니다. – user1310774

+0

@ user1310774 jsfiddle.net에서 코드를 사용하여 피들 (fiddle)을 만들 수 있습니까? 답변을 제공하는 데 도움이됩니다. – dSquared

+0

나는 약간의 이유 때문에 여백을 변경하는 것과 충돌하는 것처럼 보인 요소를 CSS로 전환했다. – user1310774

관련 문제