2012-04-25 11 views
29

toggleClassが完了したらどのように機能を実行できますか?私は、次のことを試してみましたが、運としました:toggleClassのjquery関数が完了しましたか?

$("#loader").toggleClass('fadeOut', function() { 
    alert('a'); 
}); 
+4

トグルクラスは即時であり、あなたがtoggleClassためのコールバックを必要としません: は、この例では、私は$(this)$('#loader')

jQueryの可能性があなたの状況では.delay()機能と.queue()

$(this).toggleClass("focus_out").delay(500).queue(function(custom_call_back) { $(this).removeClass('focus_out'); custom_call_back(); }); 

を組み合わせますtoggleClassの後に警告する次の行に 'alert( 'a')'を置いてください。 –

+0

$( "#loader")を隠すために$( "#loader")を取得しようとしています。 – panthro

+0

私は退色した後にhide()する$( "#loader")を取得しようとしていますが、どうすればいいですか? - – panthro

答えて

68

、フェードイン/フェードアウト切り替えについては、以下を参照してください。この約束オブジェクトは、選択された要素のすべての実行中のアニメーションが完了した後に解決されます。その時点で、あなたはそれを完了メソッドにバインドすることができます。

$("#loader").toggleClass('fadeOut',600).promise().done(function(){ 
    alert('a'); 
}); 

http://jsfiddle.net/skram/4x76J/

+1

:) deferredオブジェクトを使用するための+1。 –

+13

このソリューションにはjQuery UIが必要です。 – Aryo

+0

jqueryなしではアニメーションではないので、コールバックを持たないでしょう。あなたのポイント? –

1

toggleClassすぐに実行されるので、あなただけのtoggleClassが実行された後に警告が表示されます次の行にalert('a')を置き、toggleClassのためのコールバックを必要としません。

編集:あなたはjQueryのUI効果たいように見える - toggleClass残念なことにコールバック関数を持っていません。

あなた自身のトグル機能を書くべきでしょう。 jQueryのは、あなたが.promise()を使用してアクセスすることができ、繰延オブジェクトを返す約束メソッドを持ってい

var $loader = $("#loader"); 
if ($loader.is(':visible')) { 
    $loader.fadeOut(100, function() { 
     alert('fade out complete'); 
    }); 
} else { 
    $loader.fadeIn(100, function() { 
     alert('fadeIn complete'); 
    }); 
} 
+0

私はフェードアウトした後に$( "#loader")をhide()にしようとしていますが、どうすればいいですか? - – panthro

+0

@ user1013512 jQueryのUIのエフェクトにはコールバックがありません。更新された投稿をチェックして、それがうまくいくかどうか教えてください。 –

+1

@Vegaは '.toggleClass()'を実行します。 try().toggleClass()。promise()。done(function(){alert( "done")}); 'ほとんどすべてのアニメーションメソッドは、遅延オブジェクトを返しません。 –

-1
$("#loader").stop().fadeTo(400,0, function() { 
     $(this).toggleClass('fadeOut').hide(); // exec after is faded out. 
     alert(' ta-da!'); 
    }); 
-1

私はこの問題に対処するために、他の方法を使用していました。 、.delay();queue();

関連する問題