Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
imagesLoaded() jquery plugin - adding unbind for load event
// $('img.photo',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==";
elems.bind('load.imagesLoaded',function(e){
if (--numOfElems <= 0 && e.target.src !== blank){ callback.call(elems,e.target); $(elems).unbind('load.imagesLoaded'); }
}).each(function(index, e){
// cached images don't fire load sometimes, so we reset src.
if (e.complete || e.complete === undefined){
var src = e.src;
// webkit hack from http://groups.google.com/group/jquery-dev/browse_thread/thread/eee6ab7b2da50e1f
// data uri bypasses webkit log warning (thx doug jones)
e.src = blank;
e.src = src;
}
});
return this;
};
@ksykulev

This comment has been minimized.

Copy link
Owner Author

commented Aug 25, 2011

This version allows imagesLoaded to be called multiple times.

@adamjakab

This comment has been minimized.

Copy link

commented Apr 24, 2014

muche better - but u need to correct or len or numOfElems

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.