2011-09-11 3 views
6

質問はかなり簡単です。 jQueryで2つ以上の要素を選択し、たとえばjQueryのfadeOut()関数を使用してそれらを非表示にすると、コールバック関数が(要素ごとに)2回呼び出されます。コールバックを1つだけ受信する方法はありますか?jQueryで複数の要素を非表示にして1つのコールバックを取得

このタスクを実行するために現在使用しているコードは、以下に貼り付けられています。

$('#element-1, #element-2').fadeOut(250, function() { /* Callback invoked twice. */ }); 

同様の質問は(jQuery multiple animate() callback)の前に掲示されているが、解決策は単純な問題思える何のため非常に複雑と思われます。

答えて

16

あなたは$.when[docs]deferred objects)を使用することができます。

$.when($('#element-1, #element-2').fadeOut(250)).then(function() { 
    // do something 
}); 

DEMO

これは、私の知る限り任意のアニメーションで動作します。

+0

他の方法はありますか?それは散歩のように見える... ishly ...またはjQueryの適切な方法と見なされるだけで、オブジェクトは私の無知です? –

+0

私は他の方法を知らないし、 '.animate'文書には何も言及していません。 –

関連する問題