Reputation: 91525
While creating a JQuery plugin that required image dimensions, I discovered that webkit browsers like Chrome often return 0 size for images because they're loaded in parallel.
My quick and dirty solution was to wrap the code that calls my plugin in a $(window).load()
event:
$(document).ready(function() {
$(window).load(function() {
$('.magnifier').magnifier();
});
});
How would I go about implementing this inside the plugin itself? What is the cleanest way to detect that images have loaded so I can measure their dimensions?
Upvotes: 1
Views: 621
Reputation: 31761
I'm not sure I understand completely but this will fire after all images are loaded.
$("img").load(function() {
});
Upvotes: 1
Reputation: 488374
Images have a load() event, so you could do something like:
$(document).ready(function() {
$('.magnifier').magnifier();
});
$.fn.magnifier = function() {
return this.each(function() {
$(this).find('img').load(function() {
// do something to image when it is loaded
});
});
}
You could also simply wrap the code around window.load inside the plugin itself:
$.fn.magnifier = function() {
var that = this;
$(window).load(function() {
that.each(function() {
$(this).find('img').each(function() {
// image would be loaded at this point
});
});
});
return this;
}
Upvotes: 3