jquery实现图片预加载

代码如下

<div class="box">
    <p>
        <a href="javascript:;" class="btn" data-control="prev">上一页</a>
        <a href="javascript:;" class="btn" data-control="next">下一页</a>
    </p>
    <img alt="pic" id="img" width="800" src="" />
</div>

<script src="../js/jquery-2.1.1.min.js"></script>
<script type="text/javascript">
    //无序加载 通过 $.each()方法对图片进行了同时加载
    //有序加载 是从imgs数组的第一张开始往后加载
    var imgs = [
        'http://img1.imgtn.bdimg.com/it/u=3349546634,3754791255&fm=26&gp=0.jpg',
        'http://d-pic-image.yesky.com/1080x-/uploadImages/2019/044/59/1113V6L3Q6TY.jpg',
        'http://img0.imgtn.bdimg.com/it/u=2960231721,1241541633&fm=26&gp=0.jpg',
        'http://img3.imgtn.bdimg.com/it/u=2094296397,2457159940&fm=26&gp=0.jpg'
    ];

    var len = imgs.length,
        count = 0,
        index = 0;

    $('#img').attr('src', imgs[index]);//加载第一张图片

    load();
    function load() {
        var imgObj = new Image();
        // 有序加载
        $(imgObj).on('load error', function () {
            if (count >= len) {
                //图片加载完毕
            } else {
                load();
            }
            count ++;
        });
        imgObj.src = imgs[count];
    }

    $('.btn').on('click', function () {
        if ('prev' === $(this).data('control')){//上一张
            index = Math.max(0, --index);
        } else { //下一张
            index = Math.min(len - 1, ++index);
        }
        document.title = (index + 1) + '/' + len;
        $('#img').attr('src', imgs[index]);
    });
</script>

实现图片预加载的关键代码是 new Image() ,例子中使用的是load事件和递归调用实现的有序预加载

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值