jQuery淡出然后淡入

时间:2011-06-09 02:04:04

标签: jquery fadein fadeout

关于这个主题有一堆,但我找不到适合我情况的实例。

将图片淡出然后淡入另一张图片。相反,我遇到了第一个淡出的问题,并且在动画完成之前立即淡出。下一个淡入淡出。

我曾经读过这个,并且不记得究竟是什么伎俩..

http://jsfiddle.net/danielredwood/gBw9j/

感谢您的帮助!

4 个答案:

答案 0 :(得分:75)

在fadeout的回调中淡化另一个,fadeout在淡出完成时运行。使用您的代码:

$('#two, #three').hide();
$('.slide').click(function(){
    var $this = $(this);
    $this.fadeOut(function(){ $this.next().fadeIn(); });
});

或者,你可以“暂停”链,但你需要指定多长时间:

$(this).fadeOut().next().delay(500).fadeIn();

答案 1 :(得分:4)

在jQuery 1.6之后,使用promise似乎是一个更好的选择。

var $div1 = $('#div1');
var fadeOutDone = $div1.fadeOut().promise();
// do your logic here, e.g.fetch your 2nd image url
$.get('secondimageinfo.json').done(function(data){
  fadeoOutDone.then(function(){
    $div1.html('<img src="' + data.secondImgUrl + '" alt="'data.secondImgAlt'">');
    $div1.fadeIn();
  });
});

答案 2 :(得分:2)

这可能有所帮助:http://jsfiddle.net/danielredwood/gBw9j/
基本上$(this).fadeOut().next().fadeIn();是你需要的

答案 3 :(得分:0)

有了异步功能和承诺,它现在可以像这样简单地工作:

async function foobar() {
  await $("#example").fadeOut().promise();
  doSomethingElse();
  await $("#example").fadeIn().promise();
}