Skip to content

Instantly share code, notes, and snippets.

@rambuvn
Created July 25, 2012 14:16
Show Gist options
  • Save rambuvn/3176413 to your computer and use it in GitHub Desktop.
Save rambuvn/3176413 to your computer and use it in GitHub Desktop.
Images Loaded
// $('img.photo',this).imagesLoaded(myFunction)
// execute a callback when all images have loaded.
// needed because .load() doesn't work on cached images
// Modified with a two-pass approach to changing image
// src. First, the proxy imagedata is set, which leads
// to the first callback being triggered, which resets
// imagedata to the original src, which fires the final,
// user defined callback.
// modified by yiannis chatzikonstantinou.
// original:
// 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.find( 'img' ),
elems_src = [],
self = this,
len = elems.length;
if ( !elems.length ) {
callback.call( this );
return this;
}
elems.one('load error', function() {
if ( --len === 0 ) {
// Rinse and repeat.
len = elems.length;
elems.one( 'load error', function() {
if ( --len === 0 ) {
callback.call( self );
}
}).each(function() {
this.src = elems_src.shift();
});
}
}).each(function() {
elems_src.push( this.src );
// webkit hack from http://groups.google.com/group/jquery-dev/browse_thread/thread/eee6ab7b2da50e1f
// data uri bypasses webkit log warning (thx doug jones)
this.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
});
return this;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment