jQuery - 不止一次使用promise()。done()

时间:2014-04-05 03:50:23

标签: javascript jquery

好吧,我今晚一直试图这样做,我似乎无法完成它。我有一些我正在开发的具有“菜单”的东西 - 例如:点击后退按钮,一个子菜单淡出,另一个淡入淡出。但我遇到了一些麻烦有了这个;当我使用普通的回调函数时,主菜单会在子菜单完成淡出之前淡入。如果我使用promise().done(),那么它不会激发多次(从我得到的)。我打开子菜单,然后点击后退按钮。子菜单淡出,没有其他任何事情发生。帮助

$('#newgame').click(function() {
    $('#menu').fadeOut(1000, function() {
        $('#newgameoptions').fadeIn(1000);
    });
});
$('.back').click(function() {
    $('.submenu').fadeOut(1000);
});
$('.submenu').promise().done(function() {
    $('#menu').fadeIn(1000);
});

1 个答案:

答案 0 :(得分:1)

您需要为每个淡出的子菜单创建一个新的承诺,即将其移动到处理程序中:

$('.back').click(function() {
    $('.submenu').fadeOut(1000).promise().done(function() {
        $('#menu').fadeIn(1000);
    });
});

或者,如果没有.promise(),您只需使用callback方法的常用fadeOut参数,就像您已经在$('#menu').fadeOut()中完成的那样:

$('.back').click(function() {
    $('.submenu').fadeOut(1000, function() {
        $('#menu').fadeIn(1000);
    });
});
相关问题