对于图片的处理,例如幻灯片播放、缩放等,都是依赖于在所有图片完成之后再进行操作。

今天来看下如何判断所有的图片加载完成,而在加载完成之前可以使用 loading 的 gif 图表示正在加载中。

一、普通方法

监听 img 的 load 方法,每 load 一张图片比较一次。关键代码如下:

var num = $img.length;$imgs.load(function() {num--;if (num > 0) { return; } console.log('load compeleted'); } 

二、使用 jQuery 中的 Deferred 对象

Deferred 对象是从 jQuery 1.5.0 版本开始引入的一个新功能,详细介绍可以见 官方文档。

简单的说,Deferred 对象就是jQuery的回调函数解决方案,它解决了如何处理耗时操作的问题, 对那些操作提供了更好的控制,以及统一的编程接口。

阮一峰有一篇文章是介绍 Deferred 对象的,写的比较详细,对于入门比较有用。

jQuery的deferred对象详解

在这里,我们用到了:

  • deferred.resolve(): Resolve a Deferred object and call any doneCallbacks with the given args.
  • deferred.when(): Provides a way to execute callback functions based on one or more objects, usually Deferred objects that represent asynchronous events.
  • deferred.done(): Add handlers to be called when the Deferred object is resolved.

关键代码:

var defereds = [];$imgs.each(function() {var dfd = $.Deferred();$(this).load(dfd.resolve);defereds.push(dfd); }); $.when.apply(null, defereds).done(function() { console.log('load compeleted'); }); 

基本思路:
每加载完一张图片 resolve(),when() 当所有的 Deferred 完成便执行 done()。

注: 因为 $.when 支持的参数是 $.when(dfd1, dfd2, dfd3, ...),所以我们这里使用了 apply 来接受数组参数。

转载于:https://www.cnblogs.com/good10000/p/4717046.html

jQuery 判断所有图片加载完成相关推荐

  1. ajax请求中带判断语句例子,jQuery中借助deferred来请求及判断AJAX加载的实例讲解...

    ajax请求异步队列加载我们在开发程序的时候通常会碰到使用ajax加载数据显示到列表的情况.ajax默认使用异步加载(async:true).为什么不使用同步呢,因为ajax同步加载会UI渲染线程阻塞 ...

  2. Jquery图片懒加载和预加载

    Jquery图片懒加载和预加载 懒加载 1.什么是懒加载 Lazy Load也叫懒加载,延迟加载,顾名思义,就是在图片未到达可视区域时,不加载图片,我们常常在很多的优秀网站上看到类似的例子,例如迅雷. ...

  3. jquery ajax 滚动加载数据

    jquery php 滚动加载数据(文件包 rollingpage) 效果如下: 页面加载时候($function(){ 自动加载第一页数据 }) 设置: var winH = $(window).h ...

  4. ajax静态加载图片,JQuery实现Ajax加载图片的方法

    本文实例讲述了JQuery实现Ajax加载图片的方法.分享给大家供大家参考,具体如下: 最近在学习JQuery,想从原理上模拟一下无刷新的相册浏览. 最先想到的思路是利用缓存,也就是先显示提示消息,然 ...

  5. 上拉加载 php,jquery上拉加载代码及原理

    jquery上拉加载更多原理: 其实就是判断下 当前滚动条距离底部的距离 滚动条距离底部小于一个值时候 我们执行加载内容 下面上jquery代码://$(window).height() 可视区域高度 ...

  6. jQuery 超屏加载

    jQuery 超屏加载,当文档超出屏幕的高度时,加载最新下个列数据 $(window).scroll(function () {var height = $(document).height(); / ...

  7. JS判断页面加载完毕

    //JS判断页面加载完毕,再隐藏加载效果层,一个简单的JS加载效果.document.onreadystatechange = function () {if (document.readyState ...

  8. WebBrowser控件判断完全加载中DocumentCompleted和Navigated的关系

    WebBrowser控件判断完全加载使用DocumentCompleted是有问题的,所以有人提出可以使用判断DocumentCompleted的次数和Navigated次数完全相等的方法判断是否完全 ...

  9. Opencv判断是否加载图片的两种方法

    加载图片是图像处理最基本的操作,但有的时候我们加载图片会因为图片路径不正确 或者没有图片等原因而报错,经常写代码的凭经验就知道是哪错了,但初学者一般是看不懂这 些错误,就会很恼火了,如果加个判断语句就 ...

最新文章

  1. Android NullPointerException解决方法(空指针异常)
  2. c++学习笔记之构造函数
  3. Java 修饰符、运算符笔记总结
  4. JavaScript 第二课 JavaScript语法
  5. matlab 动态目录调用程序集,C#中如何动态添加程序集查找目录
  6. 用于创建此对象的程序是package_【ROS 学习笔记】CMakeLists.txt 与 package.xml
  7. 稀疏表示的合适字典_基于共振稀疏分解的滚动轴承早期微弱故障诊断
  8. Python 2.7的新特性
  9. sqlprompt安装注册
  10. FPGA图像处理 —— fpga实现cameralink接口图像传输
  11. VS2015调试无法加载PDB 文件
  12. linux识别csr8510,【记录】给CSR8510 A10芯片的USB转蓝牙模块安装驱动
  13. 云计算概论-大数据与云计算
  14. 星三角启动的优缺点和内外接的区别
  15. 苹果的傲慢与堕落,从iPhone XS的发布谈起!
  16. STM32(3)——外部中断的使用
  17. Deep Network with Stochastic Depth(阅读笔记)一种随机深度的正则化方法
  18. WiFi功耗管理(一)(概述)
  19. 日语バズる中文怎么翻译?
  20. 导师喜欢什么样的“真”研究生?(转科学网)

热门文章

  1. softmax理论及代码解读——UFLDL
  2. 【LeetCode】200. 岛屿的个数
  3. IDEA系列(四)一部署war 和 war exploded的区别
  4. 第二部分:志愿录取标准
  5. iOS警告-This block declaration is not a prototype
  6. highcharts图表高级入门之polar:极地图的基本配置以及一些关键配置说明
  7. 转:谷歌离线地图基础
  8. java数组 —(8)
  9. jmeter(四十五)常用Beanshell脚本
  10. ironic如何支持部署时按需RAID?