我有一个非常简单的 jQuery 预加载器,它可以正常工作(我相信代码是正确的,但请继续检查一下)......
我想要做的是,如果图像无法下载,然后尝试另一种变体图像,直到你找到一个....只有多达 4 个变体,由路径内的数字表示。
让我解释一下:
图像路径可能如下
.../images/800px/image1.jpg
如果那个失败,然后尝试
.../images/350px/image1.jpg
如果那个失败,然后尝试
.../images/100px/image1.jpg
如果那个失败,然后尝试
.../images/50px/image1.jpg
如果那个失败,然后尝试
.../images/30px/image1.jpg
如果您注意到,所有这些变化的区别在于路径内的数字......即 800、350、100、50、30
现在,在函数 load_img(如下)中,我正在考虑使用 .error 属性递归调用函数,直到找到图像..
这是最好的方法吗?关于如何实现这一目标的任何提示或最佳实践?
在此先感谢
马尔科
这是代码示例
<div id="zoom-artwork"></div>
<ul class="nav-zoom-artwork">
<li><a href=".../images/800px/image1.jpg">image doesn't exist...</a></li>
<li><a href=".../images/800px/image2.jpg">image 2</a></li>
<li><a href=".../images/800px/image3.jpg">image 3</a></li>
</ul>
...
$('#nav-zoom-artwork a').click(function(e) {
var src = $(this).attr('href');
var alt = $(this).children('img').attr('alt');
load_img(src, alt);
e.preventDefault();
});
// ZOOM artwork
function load_img(src, alt) {
var img = new Image();
$(img).load(function() {
// set the image hidden by default
$(this).hide();
// remove the loading class, then insert the image
$('#zoom-artwork').removeClass('loading').html(this);
// fade in the image to create a nice effect
$(this).fadeIn(400);
})
.error(function() {
alert('try another size... call the function recursively with another path...');
})
.attr({
src:src,
alt:alt
});
}