views:

171

answers:

2

Hi folks,

Just a simple question, for the jquery event. Are the .load(), .ready() and .unload() run in order when the DOM is loaded? The answer seems yes when I see the jQuery Documentation.

<script type="text/javascript">

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

        $(document).ready(function() {
            //run code that MUST be after initialize

        });

        $(window).unload(function() {

            Cleanup();
        });
    </script>

However, the code inside the .ready() is execute before the initializeCode(); is execute, so I feel really strange. And now I have to place my code inside the .onload() method and just after the initializeCode(); line, which means to be inside the .ready() block.

Could someone explain me more about this, as I am new to jQuery.

Thank you so much.

+1  A: 

window load will wait for all resources to be loaded.

document ready waits for the document to be initialized.

unload well, waits till the document is being unloaded.

the order is: document ready, window load, ... ... ... ... window unload.

always use document ready unless you need to wait for your images to load.

shorthand for document ready:

$(function(){
    // yay!
});
David Murdoch
he is confused about **order**, `ready` should be fired before `load` but it is not. He is not asking about what you are telling.
Sarfraz
@Sarfraz...what? he clearly states in his post that "ready() is execute[d] before the initializeCode();"
David Murdoch
+6  A: 
$(document).load();

Will execute after the page along with all its contents are done loading. This means that all images, CSS (and content defined by CSS like custom fonts and images), scripts, etc. are all loaded. This happens event fires when your browser's "Stop" -icon becomes gray, so to speak. This is very useful to detect when the document along with all its contents are loaded.

$(document).ready();

This on the other hand will fire as soon as the web browser is capable of running your JavaScript, which happens after the parser is done. This is useful if you want to execute JavaScript as soon as possible, but you don't need to deal with the DOM (e.g., for some calculations).

$(document).unload();

This event will be fired when you are navigation off the page. That could be Refresh/F5, pressing the previous page button, navigating to another website or closing the entire tab/window.

To sum up, ready() will be fired before load(), and unload() will be the last to be fired.

Kai Sellgren
Thanks Kai, that's very clear. ;) Have a nice day.
Eric