出于某种原因,如果图像保存在缓存中(仅限 Chrome),jQuery .load 不会触发。
这是jsfiddle
我该如何解决?
这是因为,如果当前src和新 src相同,则不会加载新图像,因为两者相同。这样做的技巧是使当前的src值变为空白。
$("#btn").click(function(){
$("#tst").attr('src','');
$("#tst").attr('src','https://www.google.co.il/images/srpr/logo3w.png');
});
<a href="http://jsfiddle.net/Vaishak/uYmWQ/2/">jsFiddle 演示链接
例如,您可以使用时间戳:
var timestamp = new Date().getTime();
$("#image_test")
.attr("src", "http://www.sandiegovips.com/wp-content/uploads/2014/05/test-image.jpeg?timestamp="+timestamp)
.load(function() {
alert("image loaded!");
});
<img id='image_test' src=""/>
您可以通过在图像的 url 中包含时间戳来绕过缓存。这将导致每次请求时刷新缓存的图像。