当前第2页 返回上一页
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | function preloadImg(list,imgs) {
var def = $.Deferred(),
len = list.length;
$(list).each( function (i,e) {
var img = new Image();
img.src = e;
if (img.complete) {
imgs[i] = img;
len--;
if (len == 0) {
def.resolve();
}
}
else {
img.onload = ( function (j) {
return function () {
imgs[j] = img
len--;
if (len == 0) {
def.resolve();
}
};
})(i);
img.onerror = function () {
len--;
console.log( 'fail to load image' );
};
}
});
return def.promise();
}
var list = [......],
imgs = [];
$.when(preloadImg(list, imgs)).done(
function () {
}
);
|
在分别给每一个img绑定onload的回调函数时采用了闭包的方式,目的是为了保存住当前的递增变量i,要是不这么做,结果将会是list地址中没有本地缓存的图片都存储到imgs的最后一个元素上
这次每载入一张图片,我们并没有把这张图片的地址从list数组中去掉,这样后续需要使用list数组的数据时就能够顺利获取到
在这次的代码中,我们引入了jQuery的Deferred对象,这样更方便我把握整个预加载图片的过程
以上就是jQuery如何实现预加载图片功能的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
jquery如何实现预加载图片功能
更多相关阅读请进入《jQuery预加载图片》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » jQuery如何实现预加载图片功能