Skip to content

Instantly share code, notes, and snippets.

Created January 4, 2010 02:38
Show Gist options
  • Save paulirish/268257 to your computer and use it in GitHub Desktop.
Save paulirish/268257 to your computer and use it in GitHub Desktop.
imagesLoaded() jquery plugin
// $('',this).imagesLoaded(myFunction)
// execute a callback when all images have loaded.
// needed because .load() doesn't work on cached images
// mit license. paul irish. 2010.
// webkit fix from Oren Solomianik. thx!
// callback function is passed the last image to load
// as an argument, and the collection as `this`
$.fn.imagesLoaded = function(callback){
var elems = this.filter('img'),
len = elems.length,
blank = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
if (--len <= 0 && this.src !== blank){
// cached images don't fire load sometimes, so we reset src.
if (this.complete || this.complete === undefined){
var src = this.src;
// webkit hack from
// data uri bypasses webkit log warning (thx doug jones)
this.src = blank;
this.src = src;
return this;
Copy link

@cjboco - After some testing:
Putting the unbind after the "this.src = src" unbinds the load event too fast and it doesn't get called..
Putting the unbind in the conditional seems to be working OK.

if (--len <= 0 && this.src !== blank){ elems.unbind('load.imagesLoaded');,this); }

@cjboco - Thanks for your help!

Copy link

hey guys

mr @desandro has picked up this script and given it a proper repo as a home:

I've added the namespaced events to my gist above as that seems like a good idea. but in general, david's version is the new canonical one

Copy link

ok, its a cached images solution for webkit? but its simpler by checking width or height after loading event:

    img.addEventListener("load", function() 
      var tmrLoaded = window.setInterval(function()
        if (img.width) 
          alert( "its done!");
      }, 100);

    }, false);


Copy link

ahoward commented Feb 10, 2013

nice! i'm using this here ->

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment