我做了一个回调函数,该函数应在之后启动
$('.menuIco').not($(this)).fadeOut()
但是我有9个回调(而不是1个回调)(可能是由于
not($(this))
导致了10-1 = 9个元素)。为什么?以及如何预防呢?
我正在使用带有变量的解决方法,但是在我看来,它并不是太专业。
var loaded = false;
$('.menuIco').not($(this)).fadeOut(function() { // hide all icons but one
if(loaded==false) {
loaded = true;
$('.menuIco p').addClass("icoCaptionOff");
$(menuIco).animate({top: "20", left: "-100"}, "fast", function() {
LoadContent($(menuIco).attr('id'));
});
}
});
最佳答案
您可以使用.promise()在所有元素的动画制作完成后执行回调
.promise()方法返回动态生成的Promise,即
一旦将某种类型的所有动作绑定到集合,就解决了,
是否排队,已经结束。
默认情况下,类型为“ fx”,这意味着返回的Promise已解决
所选元素的所有动画均已完成时。
$('.menuIco').not(this).fadeOut().promise().done(function () {
$('.menuIco p').addClass("icoCaptionOff");
$(menuIco).animate({
top: "20",
left: "-100"
}, "fast", function () {
LoadContent($(menuIco).attr('id'));
});
});