我只需要一个回调和多个回调。使用一个简单的“类” MultiCallback 来计算调用,它似乎已经解决了。但是jQuery的fadeIn函数只调用了一次mCallback。
它必须调用 mCallback 3 次。这是通过直接在顶级范围内使用回调函数来实现的。
在我自己的函数上也测试了我的 MultiCallback 类,没有任何问题。我知道还有其他方法,例如使用 jQuery 隐藏多个元素并获取一个回调......只是想知道我的逻辑有什么问题。
<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>