Jquery快速图像切换

时间:2010-03-26 22:03:58

标签: php jquery image

我有一个php类,它根据我的db数据生成一个地图图像。它通过serInterval循环定期更新。

我试图更新它没有闪烁,但我不能。我尝试了不同的方法(preloader,imageswitcher)但没有成功。

//first load

function map()  {

$("#map").html("<img src=map.php?randval="+Math.random()+">");
}


//update it from setInterval calls

function updatemap()  {

$("#map").fadeOut(function() { 
      $(this).load(function() { $(this).fadeIn(); }); 
      $(this).attr("src", "map.php?randval="+Math.random()); 
    })
 }

有没有办法更新图像而根本没有闪烁?我宁愿中等交换而不是淡出。

我遇到的问题是,在调用updatemap()之后,图像就会消失。 ¿可能这是我正在解析的属性src的问题?

谢谢你的帮助。

2 个答案:

答案 0 :(得分:4)

你可能仍然会有轻微的闪烁。

function updatemap() {
    var img = new Image();
    img.onload = function(){
        $("#map img").attr("src", img.src);
    }
    img.src = "map.php?randval="+Math.random();
}

答案 1 :(得分:1)

您需要先将后续地图加载到隐藏元素中。然后当它们被加载时,将它们交换进来。

<div id = "map"></div>
<img id = "load-map" src = "" alt = "" />

$(document).ready(function(){
   $("#map").html("<img src=map.php?randval="+Math.random()+">");
   setTimeout(loadImage,5000);
}

function loadImage()
{
  $("#load-map")
    .attr('src','map.php?randVal='+Math.random())
    .load(function(){
      $("#map img").src($("#load-map").src);
      setTimeOut(loadImage,5000);
    });
}