2011-01-01 15 views
4

まず私はアニメイトidは、「テスト」、その後animate()の後にhide()jquery animate関数が設定されていると、動作しません。

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

私はMacOSの中のように近い効果を作り、それをアニメーション化し、それを隠したいです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(); 
     }); 

hideに設定opacityjsFiddleすぎ

+0

は、問題が継続に関するものではありません、または「正しい今you.Butに感謝上記のコードでは、 "...}、function(){$(this).hide();}"を直接書くと、うまくいきます。問題はなぜ "animate()。hide () "は機能しませんか? – hh54188

+0

@ hh54188私はずっと前に自分の答えを編集しました。見て、あなたの考えを教えてください。非同期実行のため –

+0

@ hh54188? – satoru

0

にあなたのためにこれを保存し、それが動作します:

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

}); 
+0

@ Saturo.Logic、これはいいですが、 'display' CSSプロパティが' block'なので、実際には 'iframe'を完全に隠すわけではありません。 –

+0

@Jacob 'visibility:hidden'と' display:none'の違いはありますか? – satoru

+0

@ Saturo.Logicはい、違いがあります。 –

関連する問題