点击即可重播GIF动画/重新加载GIF

时间:2012-08-07 05:14:00

标签: javascript jquery

我有一个很大的GIF动画,我正在显示加载图标,直到加载GIF。加载后,GIF会显示。效果很好,但我想添加一个"重播"按钮触发GIF重播(重新加载)。

加载代码和GIF:

HTML

<div id="loader" class="loading img-center"></div>

CSS

#loader {
 width: 600px;
 height: 450px;
 margin: auto; 
}

#loader.loading {
  background: url(/Images/ajax-loader.gif) no-repeat center center;
  width:32px;
  margin:auto ; 
}

JS

var $j = jQuery.noConflict();
$j(function () {
  var img = new Image();
  $j(img)
   .load(function () { 
     $j(this).hide();
     $j('#loader') 
      .removeClass('loading')
      .append(this);

  $j(this).fadeIn();
   })
 .error(function () {
   })
 .attr('src', '/2012/images/august/sailboat.gif');
});

上面的代码工作正常。现在为&#34;重播&#34;或者&#34;重新加载&#34;代码不起作用:

HTML

<a id="refresh" href="#"> Replay Animation </a>

JS

$j(function() {
  $j("#refresh").click(function() {
     $j("#loader").load("/2012/images/august/sailboat.gif")
  })
})

我知道JS有一些错误,但由于我缺乏JS的技能,我不知道我应该做什么或尝试什么。非常感谢任何帮助或建议!

谢谢!

2 个答案:

答案 0 :(得分:4)

检查一下:

$j("#refresh").click(function() {
  $j("#loader").find('img').attr("src", "/2012/images/august/sailboat.gif");
});

与之前的代码一样,您将图片附加到#loader中,因此,$('#loader').load(..)将无效。在#loader中找到图片,然后更改该图片的src

答案 1 :(得分:2)

如果需要,您还可以附加时间戳以避免从缓存加载图像:

$j("#refresh").click(function() {
  var timestamp = new Date().getTime();
  $j('#loader').find('img').attr('src', '/2012/images/august/sailboat.gif'+'?'+timestamp);
});