我正在尝试创建一个简单的序列:找到第一个元素,隐藏其兄弟元素,然后将其淡入。但是,它不等待其兄弟姐妹首先消失:

var $firstCaption = $('.caption').first();

$firstCaption.appendTo('.caption-content').siblings('.caption').fadeOut(function(){
     $firstCaption.fadeIn(); // this is not waiting
});


我可以使用延迟,但是我认为这是一个很麻烦的解决方案?还有其他方法吗?

JSFIDDLE:

http://jsfiddle.net/tmyie/8VjLD/

最佳答案

您可以使用一个承诺:

DEMO jsFiddle

$('a').click(function () {
    var $firstCaption = $('.caption').first();
    $firstCaption.appendTo('.caption-content').siblings('.caption').fadeOut().promise().done(function () {
        $firstCaption.fadeIn();
    });
});


顺便说一句,如果按钮连续单击多次,您可能希望在此处使用.finish()

DEMO with finish

$firstCaption.appendTo('.caption-content').siblings('.caption').finish()...

关于javascript - 用jQuery淡入淡出创建队列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22358431/

10-09 06:57