fadeIn出了点问题

时间:2014-04-07 15:52:18

标签: javascript jquery

你好我想fadeOut图片,然后用新的fadeIn做,所以我写了一个简单的代码,但是出了点问题,因为当.photo img fadesOut,然后在这张相同的照片中淡出,但之后,几秒钟它的变化是因为新的" src",但即使浏览器没有加载新的图像,旧的也不会显示,因为src已更改,但它显示,并且第二,可能是新的一个改变。有人能告诉我什么是错的吗?

var dimage = $next.children("img").attr("rel");
$(".photo img").fadeOut("slow", function () {
    $(".photo img").attr("src", dimage);
    $(".photo img").fadeIn("slow");
});

3 个答案:

答案 0 :(得分:0)

这可能是因为在更改src之后必须加载图像 考虑将图像放在标记中,然后将css属性设置为display:none。这样,图像将在脚本运行之前在浏览器中预加载,并在脚本运行时可用。

答案 1 :(得分:0)

你没有给新图像足够的时间加载。

function loadImage (src) {
    return $.Deferred(function(def){
        var img = new Image();
        img.onload = function(){
            def.resolve(src);
        }
        img.src = src;
    }).promise();
}
var dimage = $next.children("img").attr("rel");
var imageLoadedDef = loadImage(dimage);
$(".photo img").fadeOut("slow", function () {
    def.done(function(src){
        $(".photo img").attr("src", src);
        $(".photo img").fadeIn("slow");
    });
});

答案 2 :(得分:0)

突出显示的问题是当你调用它们时图像还没有准备好显示,因此解决方案是在开始幻灯片放映之前预先加载它们,创建一个带有图像路径数组的函数

function preLoad(){
  var imgs = {'test1.jpg', 'test2.jpg', 'test3.jpg'};
  var img = document.createElement('img');
  for(var i = 0; i < imgs.leght; i++){
    img.src = imgs[i]; //all images gets preloaded at this stage
  }

  startSlider(); //here you will do your code
}
相关问题