2012-03-16 10 views
2

이미지의 속성이있는 경우이를 기반으로 이미지 캡션을 애니메이션하는 작은 jQuery 스 니펫이 있습니다.jquery 이전 애니메이션이 완료되었을 때만 호버 - 아웃 애니메이션에 지연 추가

괜찮 으면 좋겠지 만 하나의 작은 문제가 있습니다. 이전 slideIn 애니메이션 가 완전히 완료하면 나는 호버 출력 (slideUp) 애니메이션에 delay하지만 를 원한다. 기본 시나리오에서 :

시나리오 1 : 사용자가 이미지를 가리키고 캡션이 완전히 움직입니다. 사용자가 튀어 나와 2 초 동안 애니메이션 지연 (캡션이 고정 된 상태)이 유지 된 다음 애니메이션이 재생됩니다.

시나리오 2 : 사용자가 이미지를 가리켜 캡션이 애니메이션에 들어가기 시작하지만 완료되기 전에 사용자가 튀어 나오게됩니다. 애니메이션은 지연없이 즉시 중지되고 애니메이션 처리해야합니다.

시나리오 1이 완벽하게 작동합니다. 시나리오 2는 그렇지 않습니다. 지연은 부분적으로 움직이는 요소가 미끄러지기 전에 발생합니다. 내 코드에서이 결함을 볼 수는 있지만 해결 방법을 찾지 못하는 것 같습니다.

Fiddle

, 그리고 현재 스크립트 :

$('.pv-inner').hover(function() { 

    var img = $(this).find('img:first'); 
    var text = img.attr('alt'); 

    if (text !== undefined) { 
     //remove any existing captions 
     $(this).find('.kppImageCaption').remove(); 

     //insert the new caption 
     img.after('<div class="kppImageText">' + text + '</div><div class="kppImageCaption"></div>'); 

     //animate it in 
     $(this).find('.kppImageCaption').stop().slideDown('slow').animate({ 
      opacity: 0.6 
     }, { 
      queue: false, 
      duration: 'slow', 
      complete: function() { 
       $(this).parent().find('.kppImageText').fadeTo(1000, 1); 
      } 
     }); 
    } 
}, function() { 

    //on hover out animate it out. Here is the problem. I only want the delay 
    //to occur if the above hover over animation completed - currently it delays 
    //in all cases. 
    $(this).find('.kppImageCaption, .kppImageText').stop().delay(2000).slideUp('slow', function() { 
     $(this).remove(); 
    }); 

}); 

편집 :

Final working fiddle. 길을 인도하는 데 도움이 될 수 있습니다.

답변

1

변수 만들기, 그냥 그에게 그것을 애니메이션을 시작하기 전에 var animationStatus = false 를 호출 할 수 complete 기능에 animationStatus = true

을 설정 (jQuery를이 문서를 애니메이션 참조) 숨어 책임이 함수에서 animationStatus = false

을 설정 - 생성 if 문. animationStatus === false - 지연. animationStatus === true - 지연없이.

행운을 빈다.

+0

감사합니다.이 스크립트를 사용하여 페이지에 여러 이미지가있는 경우 해당 변수를 공유한다고 가정합니다. 나는 js의 범위와 함께 잔인하다. 또한 플래그로 CSS 클래스를 사용하는 것을 생각하고있었습니다. –

+0

도움을 주셔서 감사합니다. 내가 제안한 것과 같은 접근 방식을 사용했지만, 페이지에 캡션이있는 이미지가 여러 개인 경우 js 범위를 보장하는 CSS 클래스 플래그를 사용하면 문제가되지 않습니다. 마지막 피들 : http://jsfiddle.net/r4bzE/11/ –

+0

듣기에 행복 :) 그 이유는 작동하는 솔루션 (코드)을 제공하는 대신 아이디어를 설명하려고하는 이유이기도합니다. 사람들이 어떻게 그것을하는지 직접 볼 수있는 사랑 :) – MFix

관련 문제