Autoexplicativo, espero.
Respuesta
Sus selectores jQuery omitirán aleatoriamente cualquier elemento porque aún no está cargado (por el navegador).
Será impredecible cuando la secuencia de comandos se ejecute de navegador a navegador, página a página.
$ (document) .ready() es la forma de jQuery de asegurarse de que el código que desea ejecutar en la carga de página se ejecuta al mismo tiempo en todos los navegadores.
También proporciona un mecanismo para apilar diferentes funciones para ejecutar en la carga de la página. Si no lo usa y tiene múltiples asignaciones onLoad, solo se ejecutará el último agregado.
$ (document) .ready() en realidad se ejecuta ANTES de que se desencadene el evento onLoad, por lo general, se ejecuta tan pronto como el DOM se haya cargado, mientras que onLoad también espera que todas las imágenes se descarguen antes de que se dispare. –
Al seleccionar elementos en el DOM, a veces funcionarán, y a veces no funcionarán.
Simplemente depende de si se han cargado o no.
Sin embargo, si inserta el script al final del documento, generalmente estará bien. (Dado que en ese momento debería haber cargado todo).
Esto es lo primero que debe aprender sobre jQuery: si desea que un evento funcione en su página, debe llamarlo dentro de la función $ (document) .ready(). Todo lo que contenga se cargará tan pronto como se cargue DOM y antes de que se carguen los contenidos de la página.
$(document).ready(function() {
// put all your jQuery goodness in here.
});
La función $ (document) .ready() tiene un montón de ventajas sobre otras formas de hacer que los eventos funcionen. En primer lugar, no tiene que poner ninguna marca de "comportamiento" en el HTML. Puede separar todo su JavaScript/jQuery en un archivo separado donde sea más fácil de mantener y donde pueda mantenerse fuera del camino del contenido. Nunca me gustó ver todos esos mensajes "javascript: void()" en la barra de estado cuando estaba sobre un enlace. Eso es lo que ocurre cuando adjunta el evento directamente dentro de una etiqueta.
En algunas páginas que usan JavaScript tradicional, verá un atributo "onload" en la etiqueta. El problema con esto es que está limitado a una sola función. Ah, sí, y agrega el marcado "conductual" al contenido nuevamente. El excelente libro de Jeremy Keith, DOM Scripting, me mostró cómo crear una función addLoadEvent en un archivo JavaScript separado que permite que se carguen múltiples funciones dentro de él. Pero requiere una buena cantidad de código para algo que debería ser bastante directo. Además, desencadena esos eventos cuando se carga la ventana, lo que me lleva a otra ventaja de $ (document) .ready().
Con $ (document) .ready(), puede hacer que sus eventos se carguen o disparen o lo que usted quiera que hagan antes de que se cargue la ventana. Todo lo que guarde entre corchetes está listo para ejecutarse lo antes posible, tan pronto como el navegador registra el DOM, lo que permite ocultarlo y mostrar los efectos y otras cosas inmediatamente cuando el usuario ve los elementos de la página por primera vez.
referencia desde http://docs.jquery.com/Tutorials:Introducing_ $ ready (documento)()
bassicly utilizar esta regla básica:
si su código implica el DOM envolver el código en $ (document) ready(). Si no involucra el DOM, entonces no lo ajuste en $ (documento).ready()
hmm si no está empaquetado, es simplemente el antiguo JavaScript, haz lo que quieras con eso, pero la biblioteca jQuery se cargará, es difícil de decir.
Hay dos razones principales para utilizar
$(document).ready (function()) // or $(function())
1) Se asegura de que el código en tan sólo se ejecuta una vez el DOM está totalmente cargado (esto no incluye la carga de imágenes, flash u otros recursos, simplemente el DOM construido a partir del HTML). Esto significa que puede colocar el javascript en cualquier lugar en el HTML en lugar de en la parte inferior (que con vainilla javascript es el único lugar donde puede colocarlo para garantizar que funcione en todo el DOM en lugar de lo que está actualmente cargado). A menos que use el evento window.onload que también lo garantiza, pero solo se puede usar una vez. Lo que me lleva a mi segundo punto;
2) Le permite disparar múltiples funciones cuando la página se ha cargado, en lugar del uso único de window.onload que tiene cuando usa vainilla javascript. Esto es genial porque significa que no tiene que a) escribir su propia función para cuidarlo, b) preocuparse por verificar si ya hay una función de carga de otra biblioteca, c) pasar lo que parece ser años de depuración solo para descubrir que su ventana.oncarga ha sido sobrescrita por el código de otra persona.
Punto de bonificación: 3) Parece genial, ¿no? : P
Otras notas: Si no está usando o manipulando el DOM, entonces su código no necesita ingresar a la función $ (document) .ready().
Poner sus archivos javascript en la parte inferior del HTML, justo antes de la </cuerpo > dará un aumento percibido en esparza carga - en realidad no es más rápido, pero el navegador cargará la JS después de que el HTML, por lo que puede comenzar renderizando el HTML mientras el JS está cargando. Esto a su vez significa que algo aparecerá en la pantalla del usuario una fracción de segundo antes que una secuencia de comandos en el <encabezado> - y en la web, conteo de segundos divididos :)
+1 escrito de manera fácil de entender :) – diEcho
- 1. jQuery - multiple $ (document) .ready ...?
- 2. ¿Cuáles son los peligros de usar sql_variant?
- 3. ¿Cuáles son los peligros de ADL?
- 4. segundo $ (document) evento ready jQuery
- 5. $ (document) .ready not Working
- 6. Cargue Google Analytics de jQuery document ready?
- 7. jQuery: $ (document) .ready() demasiado lento en IE
- 8. Modernizr vs $ (document) .ready()
- 9. jQuery $ (function() {}) y $ (document) .ready lo mismo?
- 10. jQuery y Marcos - $ (document) ready no funciona
- 11. jQuery $ (document) ready() no disparar después window.location.href
- 12. ¿Cuáles son los peligros de la prueba después del desarrollo?
- 13. ¿Cuáles son los peligros de un idioma que es "propiedad"?
- 14. Después de ejecutar $ (document) .ready(), ¿hay algún evento para eso?
- 15. Diferentes formas de $ (document) .ready
- 16. funciones dentro o fuera de jquery document ready
- 17. $ (document) .ready() e inicializando jQuery al final de la página
- 18. javascript/jquery - $ (document) .ready() y ubicaciones de script
- 19. $ (document) y ready iframe contenido
- 20. ¿Cómo funciona $ (document) .ready() en IE 8?
- 21. $ (document) ready (function() {jQuery en ... preocuparse de borrar?
- 22. forma más corta de escribir jQuery $ (document) La función ready
- 23. <script defer> y $ (document) .ready
- 24. Firefox no se dispara $ (document) ready (function() {
- 25. diferencia entre pageLoad, onload y $ (document) ready()
- 26. $ (document) .ready() se dispara demasiado pronto
- 27. ¿Cómo funcionan los subprocesos en Python, y cuáles son los peligros específicos de Python-threading?
- 28. ¿Cuáles son los beneficios y los peligros de agregar métodos a Object.prototype en Javascript?
- 29. ¿Cómo puedo usar yepnope.js con $ (document) .ready() efectivamente?
- 30. ¿Cuál es la diferencia entre $ (document) ready (function() y $ (function()
Así que si no me importa cuándo se ejecuta, es perfectamente legítimo? Mi esperanza es que se ejecute antes de lo que sería si estuviera incluido en $ (document) .ready(); – Larsenal
Si no implica DOM, entonces estoy seguro de que está bien ejecutar antes de ready(). –