我在这里结束了我的智慧。我有一个.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);
});
}
}
答案 0 :(得分: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);
});
}
}
}
如果当前没有动画列,则只允许执行代码。
如果它仍然破裂,至少你知道这不是因为动画干扰了。