# .load()

Categories: Events > Document Loading

## .load( handler(eventObject) ) Returns: jQuery

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

- #### version added: 1.0.load( handler(eventObject) )

  handler(eventObject)A function to execute when the event is triggered.

- #### version added: 1.4.3.load( [eventData], handler(eventObject) )

  eventDataA map of data that will be passed to the event handler.

  handler(eventObject)A function to execute each time the event is triggered.

This method is a shortcut for `.bind('load', handler)`.

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:

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

The event handler can be bound to the image:

    $('#book').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.

> The Ajax module also has a method named `.load()`. Which one is fired depends on the set of arguments passed.

> 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:

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

    $(window).load(function () {
      // run code
    });

#### Example: Add the class bigImg to all images with height greater then 100 upon each image load.

    $('img.userIcon').load(function(){
      if($(this).height() > 100) {
        $(this).addClass('bigImg');
      }
    });