Jquery等到所有动画完成后再开始新动画
我有一个菜单,其中包含附加到hover事件的slideDown / slideup动画。
如果我将鼠标hover在下一个菜单位置上,而之前仍然使用slideDown进行动画处理,我想等待slideDown完成,然后才启动slideUp以获取当前位置。
我试图使用promise对象,但它根本不起作用。
$('.menu-2>ul>li').each(function(){ $(this).hover( function(){ var choice = $('ul', this); ('.menu-2>ul>li>ul').promise().done(function( ) { choice.slideDown(); }); }, function(){ $('ul', this).slideUp(200); } ); });
您可以在slideDown完成后添加回调。 试试例子:
choice.slideDown("fast",function(){your function})
这只是调用动画完成
UPDATE
$('.menu-2>ul>li').each(function(){ $(this).hover( function(){ var choice = $('ul', this); ('.menu-2>ul>li>ul').promise().done(function( ) { choice.slideDown(500); }); }, function(){ $('ul', this).delay(500).slideUp(200); } ); });