2011-01-01 10 views
4

먼저 나는 애니메이션 ID가 "테스트"다음hide() jquery animate 함수가 animate() 다음에 설정된 경우 작동하지 않습니까?

<iframe id="test" src=""></iframe> 

내가 맥 OS처럼 가까운 효과를 만들어, 그것을 애니메이션으로 숨길 할 수있는 iframe이 있습니다

$('#test').animate({ 
       'width':0, 
       'height':0, 
       'top':$('input').offset().top, 
       'left':$('input').offset().left 
      },function(){ 
       //$(this).hide();   
      }).hide(); 

을하지만 보인다 iframe을 숨길 수는 없습니다. 그러나 애니메이션에있는 콜백 함수 (위의 주석이 달린 코드)에 코드를 작성하면 다시 작동 할 수 있습니다.

Here is online case

그래서 궁금 왜 숨기기() 애니메이션()? 작동 내가 뭔가를 그리워하지 않는 후?

답변

10

귀하의 질문에 대답하기 위해, (.animate() 실행 비동기) .hide()에 대한 호출이 .animate()에 대한 호출 후 즉시 을 수행되므로 .hide() 호출은 실제로 애니메이션이 완료, 전에 장소 소요 - jQuery를이 제공하는 이유는 콜백 함수를 사용하여 애니메이션 완료 시점을 사용자에게 알릴 수 있습니다.

$('#test').animate({ 'width':0, 'height':0, 'top':$('input').offset().top, 'left':$('input').offset().left }, function(){ $("#test").hide(); }); 

너무

+0

이 해둬 감사 이제 문제는 시간, 또는 "정확한 대해 아닙니다 돔 요소 ". 위의 코드에서"...}, function() {$ (this) .hide();} "을 직접 작성하면 문제가되는 이유는"animate(). hide() "가 작동하지 않습니까? – hh54188

+0

@ hh54188 나는 내 대답을 오래 전에 편집했다. 제발 당신이 생각하는 것을보세요. –

+0

@ hh54188 때문에 비동기 실행이 가능합니까? – satoru

0

hideopacity 설정 jsFiddle에 당신이 저장하고 작동합니다

$('#mask').click(function() {    
    $('#mask').fadeOut(500); 
    $('#test').animate({ 
     opacity: 'hide', 
     'top':$('input').offset().top, 
     'left':$('input').offset().left, 
    },3000); 

}); 
+0

@ Saturo.Logic, 이건 좋지만 실제로'iframe '은'display' CSS 속성이 여전히'block'이기 때문에'iframe'을 완전히 숨기지 않습니다. –

+0

@Jacob'visibility : hidden'과'display : none'의 차이점은 무엇입니까? – satoru

+0

@ Saturo.Logic 네, 차이가 있습니다. –