我只需要一个回调和多个回调。用一个简单的“类”MultiCallback来计算它似乎要解决的调用。 但jQuery的fadeIn函数只调用一次mCallback。jQuery多个回调到一个回调计数调用
它必须调用mCallback 3次。这通过在顶部范围内直接使用回调函数来实现。
测试我的MultiCallback类也在我自己的功能没有任何问题。我知道 还有其他方式,如Hide multiple elements with jQuery and get one callback ... 只是想知道我的逻辑有什么问题。
<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>
你的目标是在时间相继淡出的div吗? – Cranio
请注意,您正在调用三次回调,但它们会在同一时间执行。这就是我问的原因。 – Cranio
@Cranio是的,我想同时淡化所有3个div。有没有像在c#中的“锁定”? –