2011-08-09 3 views
8

요소의 값이 변경되면 요소가 애니메이션을 적용하거나 감지하는지 감지하는 방법입니까?jQuery 애니메이션이 애니메이션을 감지합니까?

요소가 움직이는 경우 함수를 트리거해야하기 때문에. 아니 애니메이션의 onComplete. 선택된 요소는 애니메이션시

+0

언제 트리거합니까? –

답변

21

다음 true를 반환 :

var isAnimating = $("#someid").is(':animated'); 

더 상세 :

http://api.jquery.com/animated-selector/
및/또는
http://api.jquery.com/animate/
단계 : 함수 ~라고 불리는 애니메이션의 각 단계를 완료하십시오.

+0

Andy 제발 pseudo-selector에 대한 제 이해를 명확히 할 수 있습니다 : 애니메이션. 내가 바라는 동작은 일단 요소가 애니메이션으로 시작되면 (: animated) 요소가 시작점으로 돌아 왔을 때라도 true입니다. 따라서 애니메이션이 애니메이션 위치에 도달했을 때이를 감지하는 단계를 사용하고 있습니다. 의사 선택기를 켜고 끌 수있는 방법이 있습니까? – codepuppy

+0

@codepuppy 이상하다. http://jsfiddle.net/aPk3y/1/ 여기에서 테스트했다. 올바른 값을 반환한다. 나는 조작하기 쉬운 방법이 있다고 생각하지 않는다 : 직접 애니메이션. – Andy

+0

Andy는이 예를 들어 주셔서 감사합니다. 좋아, 나는 그것이 당신을 위해 작동 볼 수 있습니다. 그러므로 어딘가에서 실수를 저 지르게 될 것입니다. 나는 돌아가서 나의 시험을 다시 검토 할 것이다. – codepuppy

1

간단한 방법은 애니메이션이 시작하자마자 true으로 설정되는 전역 부울을 추가하는 것입니다. 그런 다음 애니메이션이 끝날 때 false으로 설정하는 콜백 함수를 애니메이션에 추가합니다.

var running = false; 

$('#start').click(function(){ 

    running = true; 

    $('#target').animate({opacity: 0.5},'slow',function(){ 

     running = false; 

    }); 

}); 

편집 : 오케스트라가 있습니다.

+1

이 방법을 사용하는 경우 고유 한 상황에서는 경쟁 조건이 발생할 수 있으므로 사용 방법에주의하십시오. 예 :'1. 시작 버튼 (1) - running = true - t = 0ms''를 클릭하십시오. 시작 버튼 (2) - running = true - t = 200ms''를 클릭하십시오. 3. 애니메이션 (1) 종료 - 실행 = false - t = 600ms'' 4.애니메이션 (2) running - running = false - 600ms

0

요소가 움직이는 경우 함수를 트리거해야하기 때문에. 아니 애니메이션의 onComplete. $(element).on(":animated", function(){ ... }); 이후

가 작동하지 않는 것, 내가 볼 수있는 유일한 방법은 매우 간단하게 당신이 당신의 애니메이션을 실행할 때 호출 할 함수를 실행하는 것입니다

$(selector).animate(. . .); 
functionToCall(); //called with animate above 

또 다른 해결책을, 당신은 애니메이션 시작을 처리하는 라이브러리를 만들 수도 있고 위에서 설명한 간단한 방식으로 애니메이션이 시작되면 필요한 함수를 호출하는 것도 처리 할 수 ​​있습니다.

그래서 그냥 psuedocode :

var animation = new MyAnimationLibrary(function() { $(selector).animate(...) }); 
animation.onStart.push(function() { 
    alert('animation starts'); 
}); 
//then later in the code: 
animation.start(); 

그런 다음 바로 위의 호출 배열 animation.onStart의 기능을하고 애니메이션을 트리거합니다.

관련 문제