好吧,我今晚一直试图这样做,我似乎无法完成它。我有一些我正在开发的具有“菜单”的东西 - 例如:点击后退按钮,一个子菜单淡出,另一个淡入淡出。但我遇到了一些麻烦有了这个;当我使用普通的回调函数时,主菜单会在子菜单完成淡出之前淡入。如果我使用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);
});
答案 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);
});
});