判断图片是否加载完成(jquery插件fe)

在封装自己的瀑布流插件的时候,需要给每一个子元素进行定位,但是因为每个元素里面有图片,如果不能确认里面的图片是否加载完成,就进行定位的话,那么获取到的高度就会出错.

最开始的思路:

 第一步 : 获取该节点所有的图片节点

 第二步 : 获取图片节点的数量长度

 第三步 : 遍历所有图片节点

-    if 如果该图片节点已经加载完成 .数量长度-1

-   else  否则该图片节点未加载完成,那么注册onload加载事件,在该事件中 数量长度-1

    -,如果数量长度=0,那么说明全部加载完成,执行回调函数fn

[

备注:给新手看的

- Dom节点的onload 事件: 当该节点加载完毕后,图片节点是图片加载完成后执行的事件

- $.fn 是jquery中注册插件用的,这里我注册了一个oncomplete插件方法,可以通过

 $('选择器').oncomplete(function(){ 

// TODO 逻辑代码;

 }); 进行调用

 ]




$.fn.oncomplete = function(fn){
//找到所有的图片节点
var imgs=$(this).find("img");
//获取所有图片的长度
var length = imgs.length;
//进行遍历
for( var i=0;i<length;i++){
//如果图片加载完成
if($(imgs[i]).height()>0){
length--;
//如果所有图片加载完成,执行回调函数
if(length==0)
fn();
}
else{
//注册图片加载完成事件
imgs[i].οnlοad= function(){
length--;
  //如果所有图片加载完成,执行回调函数
if(length==0)
fn();
}
}
}
}

 

后来发现很坑爹的一点 : 就是火狐浏览器中,当图片未加载完成时,高度是 19px,所以这个判断是否加载完成不可以,后来发现图片节点有个原生属性是 complete 可以用来判断图片是否加载完成.那么代码改成如下

$.fn.oncomplete = function(fn){
		//找到所有的图片节点
		var imgs=$(this).find("img");
		//获取所有图片的长度
		var length = imgs.length;
		//进行遍历
		for( var i=0;i<length;i++){
			//如果图片加载完成
			if($(imgs[i]).complete){
				 length--;
				 //如果所有图片加载完成,执行回调函数
				 if(length==0)
				 	fn();
			}
			else{	
				//注册图片加载完成事件
				imgs[i].οnlοad= function(){
					length--;		
 					//如果所有图片加载完成,执行回调函数
					if(length==0)
						fn();
				}
			}
		}
	}

这样就可以用来注册一个节点加载完所有图片后的事件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值