我正在尝试创建一个简单的序列:找到第一个元素,隐藏其兄弟,然后在中淡化它。我有这种工作;然而,它不会等待其兄弟姐妹首先淡出:
var $firstCaption = $('.caption').first();
$firstCaption.appendTo('.caption-content').siblings('.caption').fadeOut(function(){
$firstCaption.fadeIn(); // this is not waiting
});
我可以使用延迟,但我认为这是一个非常混乱的解决方案?还有另一种方法吗?
的jsfiddle:
答案 0 :(得分:5)
您可以使用承诺:
$('a').click(function () {
var $firstCaption = $('.caption').first();
$firstCaption.appendTo('.caption-content').siblings('.caption').fadeOut().promise().done(function () {
$firstCaption.fadeIn();
});
});
顺便说一下,如果按钮连续多次点击,你可以在这里使用.finish()
:
$firstCaption.appendTo('.caption-content').siblings('.caption').finish()...