0

我在这里束手无策。我有一个 .each() 函数,它循环并有条件地隐藏/显示我的固定宽度 div 中的一列。如果显示该列,则会缩小前一列以使所有内容都适合,并且在隐藏新列时将其扩展为原始宽度。我的代码在 80% 的情况下都能完美运行,但有时完全随机地它不起作用,并且显示新列,并且前一列被扩展。如果我只是单击屏幕上的其他位置,则会立即修复。发生了什么??

function doLoop(condition) {
    if (condition) {    
        $(".utility-split-rmdr").each(function(index) {
            $(this).prev().animate({width: "97px"}, 200);
            $(this).hide();
        });
    } else {
        $(".utility-split-rmdr").each(function(index) {
            $(this).hide();
            $(this).prev().animate({width: "130px"}, 200);
        });
    }
}
4

1 回答 1

0

试试这个:

function doLoop(condition) {
    if(!$(".utility-split-rmdr").is(':animated')) {
        if (condition) {    
            $(".utility-split-rmdr").each(function(index) {
                $(this).prev().animate({width: "97px"}, 200);
                $(this).hide();
            });
        } else {
            $(".utility-split-rmdr").each(function(index) {
                $(this).hide();
                $(this).prev().animate({width: "130px"}, 200);
            });
        }
    }
}

这将只允许在当前没有动画列的情况下执行代码。

如果它仍然中断,至少您知道这不是因为动画干扰。

于 2013-01-04T01:58:37.893 回答