Will the DOM definitely be ready if I place my jquery code right before the </body> tag?
I have some jquery code and when I put it in the $.ready() function I can see a flash of what the page looks like before the javascript code is run.
However, if I put the code right before the </body> tag then I only see what the page looks like after the javascript is run. I used timers to see the time difference, and the code put before the end of the </body> executed 300ms sooner than the code in $.ready.
EDIT:If the DOM is reliably ready when i call my code before the </body> tag, what is the benefit to putting my code in $.ready, considering that my javascript will execute sooner if I put it before </body>?
Yes, the DOM is reliably ready at that point. This thread from the Google Closure Library mailing list may be of interest, although unfortunately as far as I know they haven’t followed up with an actual article. Some quotes from Erik Arvidsson from that thread:
and (in relation to whether the DOM element immediately above a script element will really be there)
Some further notes: