我正在做一个非常简单的图像更改,假设淡出当前图像,更改图像的src,然后淡入图像。这是基本代码......
$("#picViewer").fadeOut("slow");
document.getElementById("picViewer").src = "myImage.jpg";
$("#picViewer").fadeIn("slow");
而不是......
Javascript不会等待fadeout完成,这就是你看到的......
我错过了什么吗?另外这里还有一个奖励,... JQuery
允许我淡化为白色以外的其他颜色,或者我是否应该使用典型的hackery来解决这种情况?
答案 0 :(得分:4)
.fadeOut
接受回调。淡出后你可以放置你想要的任何东西。
回调函数还提供this
作为淡出的元素。您可以使用this
重复使用,而不必再次使用元素的id
,以避免在多个位置对元素的id
进行硬编码。
此外,您可以链接jQuery函数调用。由于attr()
会返回其修改的对象($(this)
),因此您可以将.fadeIn()
链接到淡入相同的元素。
$("#picViewer").fadeOut("slow", function() {
$(this).attr('src','myImage.jpg').fadeIn("slow");
});
实际上,代码更少。
答案 1 :(得分:3)
fadeOut
的可选第二个参数是一个回调函数,它将在元素完成淡出后调用。
$("#picViewer").fadeOut("slow", function() {
document.getElementById("picViewer").src = "myImage.jpg";
$("#picViewer").fadeIn("slow");
});
答案 2 :(得分:0)
尝试:
$("#picViewer").fadeOut("slow", function(){
document.getElementById("picViewer").src = "myImage.jpg";
$("#picViewer").fadeIn("slow");
});
答案 3 :(得分:0)
动画是异步发生的,所以你要做的是使用动画方法的回调:
$("#picViewer").fadeOut('slow', function () {
//change image src
//fadeIn
...
如果使用淡入淡出颜色表示CSS颜色,那么除非使用CSS3过渡,否则必须使用jQuery UI(或其他一些插件)来设置颜色变化的动画。