Javascript for循环中的回调函数?
在下面的for循环中,如何让函数在所有淡出之后运行 我需要做的是淡出任何可见的东西,然后淡出一个特定的对象。由于样式要求,我的topnav和dropdown nav使用不同的uls,这就是为什么事情很棘手的原因 我还不太擅长写我自己的脚本,所以我(希望)错过了一些基本的东西 我尝试过用函数包装东西,但这似乎会弄乱变量的作用域,把我不理解的东西搞砸了 谢谢你的帮助Javascript for循环中的回调函数?,javascript,jquery,for-loop,callback,Javascript,Jquery,For Loop,Callback,在下面的for循环中,如何让函数在所有淡出之后运行 我需要做的是淡出任何可见的东西,然后淡出一个特定的对象。由于样式要求,我的topnav和dropdown nav使用不同的uls,这就是为什么事情很棘手的原因 我还不太擅长写我自己的脚本,所以我(希望)错过了一些基本的东西 我尝试过用函数包装东西,但这似乎会弄乱变量的作用域,把我不理解的东西搞砸了 谢谢你的帮助 $('.ksddtop').on('mouseenter', function(){ var ddtop = $(this).
$('.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();
}
}
});
$('.ksddtop')。在('mouseenter',function()上{
var ddtop=$(this.text();
变量dd=$('.'+ddtop);
$('.ksddwrap').fadeIn();
$(dd.fadeIn();
var ksdds=$('.ksdd');
对于(变量i=0;i
而不是:
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!
});
淡出所有没有ddtop
类的ksdd
元素,然后在它们都完成动画制作后执行一些操作
更多信息:
在jQuery集合上调用.promise
将为您提供一个promise对象,该对象将在元素集合上的所有动画完成时解析。这包括排队的动画
如果您将回调函数直接传递给
.fadeOut()
,则每个元素都将得到回调,而不是在它们全部完成后得到回调。是!这个很好用!你能解释一下为什么会这样吗?promise()函数是什么(现在查看jquery文档…)?谢谢你的帮助!谢谢你的补充信息!承诺()正是我所需要的!很高兴现在能把它放在工具箱里!
$('.ksdd:not(' + ddtop + ')').fadeOut().promise().done(function(){
// all done fading!
});