如何在下面的for循环中的所有fadeOut之后运行函数?
我需要做的是淡出任何可能可见的东西,然后淡入特定对象。由于样式要求,我的topnav和dropdown nav位于不同的ul中,这就是为什么有些棘手的原因。
我不太擅长编写自己的脚本,所以(希望)缺少一些基本知识。
我试图将东西包装在函数中,但这似乎与可变范围混淆并弄乱了我不明白的东西...
谢谢你的帮助!
$('.ksddtop').on('mouseenter', function(){
var ddtop = $(this).text();
var dd = $('.' + ddtop);
$('.ksddwrap').fadeIn();
$(dd).fadeIn();
var ksdds = $('.ksdd');
for(var i = 0; i < ksdds.length; i++) {
var ksdd = ksdds[i];
if (! $(ksdd).hasClass(ddtop) ){
$(ksdd).fadeOut();
}
}
});
最佳答案
如果我了解要求,则应该这样做:
$('.ksdd:not(' + ddtop + ')').fadeOut().promise().done(function(){
// all done fading!
});
淡出所有没有
ksdd
类的ddtop
元素,然后在它们都完成动画处理后执行一些操作。更多信息:
在jQuery集合上调用
.promise
将为您提供一个promise对象,该对象将在元素集合上的所有动画完成时解析。这包括排队的动画。如果您直接将回调函数传递给
.fadeOut()
,则对每个元素都将获得一个回调,而不是在所有元素完成之后获得一个回调。