j查询多个回调到一个回调计数调用

jQuery multiple callbacks to one callback counting calls

本文关键字:回调 一个 调用 查询      更新时间:2023-09-26

我只需要多个回调中的一个回调。通过一个简单的"类"多回调来计算调用,它似乎已经解决了。但是 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>

更改

// executes function, returns undefined, passing undefined
$(allElements).fadeIn(400, multiCallback.mCallback());

// pass a reference to the function
$(allElements).fadeIn(400, multiCallback.mCallback); 
  1. 将 multiCallback.mCallback() 替换为 multiCallback.mCallback

  2. 将代码放在$(function(){ ... });中,因为 DOM 元素此时可能不可用。

修复了 JSFiddle 上的代码