自分のページに成功メッセージを表示したいと思います。
jQueryfadeOut
メソッドを使用して、要素をフェードしてから削除しています。持続時間を長くして長持ちさせることはできますが、これは奇妙に見えます。
私がやりたいことは、要素を 5 秒間表示してから、すぐにフェードアウトし、最後に削除することです。
jQueryを使用してこれをどのようにアニメーション化できますか?
自分のページに成功メッセージを表示したいと思います。
jQueryfadeOut
メソッドを使用して、要素をフェードしてから削除しています。持続時間を長くして長持ちさせることはできますが、これは奇妙に見えます。
私がやりたいことは、要素を 5 秒間表示してから、すぐにフェードアウトし、最後に削除することです。
jQueryを使用してこれをどのようにアニメーション化できますか?
jQuery 1.4の新しいdelay()
関数でうまくいくはずです。
$('#foo').fadeIn(200).delay(5000).fadeOut(200).remove();
使用するsetTimeout(function(){$elem.hide();}, 5000);
$elem
非表示にする要素はどこにあり5000
、ミリ秒単位の遅延です。実際には、 への呼び出し内で任意の関数を使用できますsetTimeout()
。そのコードは、簡単にするために小さな無名関数を定義するだけです。
@John Sheehan のアプローチが機能している間、IE7 でjQuery fadeIn/fadeOut ClearType グリッチに遭遇します。個人的には、@John Millikin のsetTimeout()
アプローチを選択しますが、純粋な jQuery アプローチに設定されている場合は、マージンなどの不透明でないプロパティでアニメーションをトリガーすることをお勧めします。
var left = parseInt($('#element').css('marginLeft'));
$('#element')
.animate({ marginLeft: left ? left : 0 }, 5000)
.fadeOut('fast');
マージンが固定値であることがわかっている場合は、少しきれいになります。
$('#element')
.animate({ marginLeft: 0 }, 5000)
.fadeOut('fast');
編集: jQuery FxQueues プラグインが必要なことだけを行うようです:
$('#element').fadeOut({
speed: 'fast',
preDelay: 5000
});
純粋なjQueryアプローチの場合、次のことができます
$("#element").animate({opacity: 1.0}, 5000).fadeOut();
それはハックですが、それは仕事をします
var $msg = $('#msg-container-id');
$msg.fadeIn(function(){
setTimeout(function(){
$msg.fadeOut(function(){
$msg.remove();
});
},5000);
});
dansaysのコメントに続いて、以下は完全にうまく機能しているようです。
$('#thing') .animate({dummy:1}, 2000)
.animate({ etc ... });
dansaysの答えは私にはうまくいきません。何らかの理由で、remove()
すぐに実行され、アニメーションが発生する前にdivが消えます。
remove()
ただし、次のように機能します(メソッドを省略します)。
$('#foo').fadeIn(500).delay(5000).fadeOut(500);
ページに非表示のDIVがあるかどうかは気になりません(とにかく少数であってはなりません)。
1.6.2 の更新
ネイサン・ロングの答えは、遅延またはに従わずに要素をポップオフさせfadeOut
ます。
これは機能します:
$('#foo').delay(2000).fadeOut(2000);