Reputation: 13806
I have some code I am trying to run once my image has finished loading. I use this following jQuery code:
$("#myimageid").load(function() {
alert('Image Loaded');
});
However the popup never show up. I can't get the .load() function to work ! Anyone had issues with this?
Upvotes: 44
Views: 26564
Reputation: 630627
If you're running this after the image already has a set source, you need to do an additional check for caches images (who fired the event, just before you added an event handler listening for it). You can do that like this:
$("#myimageid").on('load', function() {
alert('Image Loaded');
}).each(function() {
if(this.complete) $(this).load();
});
Update for later versions of query, use:
if(this.complete) $(this).trigger('load');
Using (this).load();
will produce a Cannot read property 'indexOf' of undefined
error
Upvotes: 117
Reputation: 28711
What happens when you clear your browser's cache and try the script again? From the jQuery load()
docs:
It is possible that the load event will not be triggered if the image is loaded from the browser cache. To account for this possibility, we can use a special load event that fires immediately if the image is ready. event.special.load is currently available as a plugin
In general, it is not necessary to wait for all images to be fully loaded. If code can be executed earlier, it is usually best to place it in a handler sent to the .ready() method.
So it sounds like your cached image isn't triggering the load event, so you may want to try the plug-in that's mentioned. You can find the JS file to download here.
Hope this helps!
Upvotes: 0