load event


Bind an event handler to the "load" event, or trigger that event on an element.

.on( "load" [, eventData ], handler )Returns: jQuery

Description: Bind an event handler to the "load" event.

This page describes the load event. For the .load() method removed in jQuery 3.0, see .load().

The load event is sent to an element when it and all sub-elements have been completely loaded. This event can be sent to any element associated with a URL: images, scripts, frames, iframes, and the window object.

For example, consider a page with a simple image:

1
<img src="book.png" alt="Book" id="book">

The event handler can be bound to the image:

1
2
3
$( "#book" ).on( "load", function() {
// Handler for `load` called.
} );

As soon as the image has been loaded, the handler is called.

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.

Caveats of the load event when used with images

A common challenge developers attempt to solve using the load shortcut is to execute a function when an image (or collection of images) have completely loaded. There are several known caveats with this that should be noted. These are:

  • It doesn't work consistently nor reliably cross-browser
  • It doesn't fire correctly in WebKit if the image src is set to the same src as before
  • It doesn't correctly bubble up the DOM tree
  • Can cease to fire for images that already live in the browser's cache

Note: The .live() and .delegate() methods cannot be used to detect the load event of an iframe. The load event does not correctly bubble up the parent document and the event.target isn't set by Firefox, IE9 or Chrome, which is required to do event delegation.

Examples:

Run a function when the page is fully loaded including graphics.

1
2
3
$( window ).on( "load", function() {
// Run code
} );

Add the class bigImg to all images with height greater than 100 upon each image load.

1
2
3
4
5
$( "img.userIcon" ).on( "load", function() {
if ( $( this ).height() > 100) {
$( this ).addClass( "bigImg" );
}
} );