jQuery如何实现预加载图片功能


当前第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() {

        //预加载结束

        //do something here

    }

);

在分别给每一个img绑定onload的回调函数时采用了闭包的方式,目的是为了保存住当前的递增变量i,要是不这么做,结果将会是list地址中没有本地缓存的图片都存储到imgs的最后一个元素上

这次每载入一张图片,我们并没有把这张图片的地址从list数组中去掉,这样后续需要使用list数组的数据时就能够顺利获取到

在这次的代码中,我们引入了jQuery的Deferred对象,这样更方便我把握整个预加载图片的过程

以上就是jQuery如何实现预加载图片功能的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

jquery如何实现预加载图片功能

更多相关阅读请进入《jQuery预加载图片》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...