判断图片是否全部加载完成
方法一(闭包):
var $imgs = $('.img');//所有图片 //判断图片加载完成 for (var i = 0; i < $imgs.length; i++) { ($imgs[i].onload = function(i) { return function() { if(i == $imgs.length-1) { console.log('最后一张图片加载完成!'); } } }(i)); }
PS:该方法是最后一张加载完成即加载完成。如想判断全部加载完成可定义变量比较是不是img的长度,或者用方法二。
方法二: 使用deferred
var defereds =[]; var $imgs = $('.img');//所有图片 // 判断图片加载完成 $imgs.each(function() { var dfd = $.Deferred(); $(this).load(dfd.resolve); defereds.push(dfd); }); $.when.apply(null, defereds).done(function() { console.log('全部加载完成!') });