javascript - 如何检测 jquery Fade 动画是否正在进行?

标签 javascript jquery

这是关于 jQuery fadeIn fadeOut 的代码

function timecheck(obj,options,inAction){
    var items = options.items;

    // check if anything needs to be done
    for (var i=0; i<items.length; i++) {
            if(items[i][0]> obj.get(0).currentTime) {
                $('#item_'+i).hide();
            }else if(items[i][0]<=obj.get(0).currentTime && items[i][1] >= obj.get(0).currentTime && !inAction['item_'+i]){
                console.log(inAction['item_'+i] = true);
                $('#item_'+i).fadeIn('normal',function(){ inAction['item_'+i] = false; console.log(inAction); });


            }else if(!inAction['item_'+i]){
                console.log(inAction['item_'+i] = true);
                $('#item_'+i).fadeOut('normal',function(){ inAction['item_'+i] = false; console.log(inAction); });

            }

    }

此代码由 javascript 每 40 毫秒调用一次。我的问题是回调尝试设置错误的不正确的 inAction 元素。我怎样才能提供呢?

最佳答案

For 循环继续增加。您需要一个闭包,并且由于您已经在使用 jQuery,因此这里有一个选项:

function timecheck(obj, options, inAction) {
    var items = options.items;

    // check if anything needs to be done
    $.each(items, function(i) {

        if (items[i][0] > obj.get(0).currentTime) {
            $('#item_' + i).hide();
        } else if (items[i][0] <= obj.get(0).currentTime && items[i][1] >= obj.get(0).currentTime && !inAction['item_' + i]) {
            console.log(inAction['item_' + i] = true);
            $('#item_' + i).fadeIn('normal', function () {
                inAction['item_' + i] = false;
                console.log(inAction);
            });


        } else if (!inAction['item_' + i]) {
            console.log(inAction['item_' + i] = true);
            $('#item_' + i).fadeOut('normal', function () {
                inAction['item_' + i] = false;
                console.log(inAction);
            });

        }

    });
}

否则,发生的情况是,当调用回调时,它已经在 i 处已经等于 items.length

关于javascript - 如何检测 jquery Fade 动画是否正在进行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18165622/

相关文章:

javascript - 如何将 2 个处理程序附加到同一个事件?

javascript - flutter inappwebview 未在控制台上打印

javascript - 不了解其容器的主干 View 、通过 AJAX 获取的模型、没有 UI/UX 权衡和可维护的代码

javascript - 字体增加动画不起作用 JavaScript

javascript - TypeError : this. ExportDataObject 不是函数

javascript - MUI Select - 更改选择大小

Javascript JQuery scrollTop 向上滚动时重置

c# - 显示 div 以显示操作错误

javascript - 将变量传递给另一个函数(easyui)

javascript - 为什么我的 jquery .load() 状态为空白?