複数のコールバックの と で 1 つのコールバックだけが必要です。呼び出しをカウントする単純な「クラス」MultiCallbackを使用すると、解決されたようです。しかし、jQuery の fadeIn 関数は mCallback を 1 回だけ呼び出します。
mCallback を 3 回呼び出す必要があります。これは、トップ スコープ内でコールバック関数を直接使用することで発生します。
MultiCallback クラスを自分の関数でも問題なくテストしました。jQueryで複数の要素を非表示にして1つのコールバックを取得するなどの他の方法があることを知っています...私のロジックの何が問題なのか知りたいだけです。
<div id="1" style="display: none; background-color: green;"></div>
<div id="2" style="display: none; background-color: red;"></div>
<div id="3" style="display: none; background-color: blue;"></div>
<script>
var allElements = "#1, #2, #3";
var multiCallback = new MultiCallback( $(allElements).length, function()
{
console.log("NEVER ENTER CALLBACK");
});
$(allElements).fadeIn(400, multiCallback.mCallback());
function MultiCallback(limit, fn)
{
var finishedCalls = 0;
function mCallback()
{
// Just enter one time !
if (++finishedCalls == limit)
{
fn();
}
}
return {
mCallback : mCallback
}
}
</script>