2011-12-19 15 views
14

Hace poco vi que se puede utilizar ya sea¿Debo usar window.load o document.ready jQuery

$('document').ready(function() { 
//Do Code 
}); 

o

$('window').load(function() { 
//Do Code 
}); 

para jQuery.

Sin embargo, me parecen lo mismo! Pero claramente no lo son.

Así que mi pregunta es: ¿Cuál debería usar para un sitio web basado en animación y asincrónico? ¿Y también cuál de los dos es generalmente mejor de usar?

Gracias.

+0

¿Para qué estás tratando de usarlo? A menudo la respuesta es "ninguno". ¿Estás haciendo algo que requiere 'cargar' en lugar de' listo'? –

+0

posible duplicado de [window.onload vs document.ready] (http://stackoverflow.com/questions/3698200/window-onload-vs-document-ready) – pimvdb

+0

@pimvdb esto es jquery, entonces no es un dup. –

Respuesta

31

$('document').ready ejecuta el código cuando el DOM está listo, pero no cuando la página se ha cargado, es decir, el sitio no se ha pintado y el contenido como imágenes no se han cargado.

$(window).load ejecuta el código cuando la página se ha pintado y se ha cargado todo el contenido. Esto puede ser útil cuando necesita obtener el tamaño de una imagen. Si la imagen no tiene estilo o ancho/alto, no puede obtener su tamaño a menos que use $(window).load.

7

Bueno en primer lugar es posible que desee considerar la posibilidad de utilizar el evento "listo", que se puede handler así:

$().ready(function() { 
    ... 
}); 

O, más sucinta y idiomáticamente:

$(function() { 
    ... 
}); 

El " load "handler realmente se relaciona con un evento real, y puede manejarse en varios tipos diferentes de elementos: <img> y por ejemplo. El evento de "carga" en el nivel de documento o ventana ocurre cuando se cargan todos los recursos de la página. El evento (sintetizado, en algunos navegadores) "listo" ocurre sin embargo cuando el DOM de la página está listo, pero posiblemente antes de cosas como <img> contenidos.

Otra opción es simplemente poner sus etiquetas <script> al final de <body> o incluso después de <body>. De esta manera, los scripts tienen todo el DOM para trabajar, pero no debes preocuparte por ningún tipo de manejo de eventos para saberlo.