Si estoy cargando mis scripts jQuery debajo de todo el HTML de mi página, ¿aún necesito esperar $(document).ready
para poder usar jQuery para encontrar elementos en la página?
Respuesta
Usted no necesita usar la función ready
de jQuery, pero su código debería escribirse con esto en mente. Cualquier click
u otros manejadores basados en bind no pueden conectarse a los selectores correctamente, sin embargo, otros como live
y $.ajax
pueden funcionar como se esperaba.
Tenga cuidado al usar scripts loader o AMD con este enfoque. jQuery debe estar disponible y debe bloquear al cargar. Carga jQuery y otras deps en la cabeza.
Un gran aspecto en esta técnica que describe que esto no es necesario el uso de jQuery para la función (no necesariamente sobre el uso de pie de página):
http://encosia.com/dont-let-jquerys-document-ready-slow-you-down/
¿Por qué 'click' (o selectores) no funcionaría? –
(Ese enlace se refiere al uso de scripts en una posición HEAD, pero no en una posición FOOT). –
Funcionaría para cualquier cosa disponible en el DOM antes de la ejecución. Cualquier cosa cargada después, por cualquier medio, como ajax o agregado en un cambio de documento posterior, no sería recogido por el 'click' de jQuery – philwinkle
No, no es necesario $(document).ready
para cualquier código que interactúa con los elementos DOM en la página si los scripts se colocan debajo de estos elementos.
Es una buena práctica ponerlos antes de la etiqueta de cierre </body>
.
La etiqueta HTML solo tiene dos hijos válidos, cabeza y cuerpo, por lo que probablemente diría que es una buena práctica colocar las etiquetas de secuencia de comandos dentro de la etiqueta de cierre del cuerpo. Los analizadores pueden ser raros con HTML no válido – Hazza
No porque el documento ya se habrá cargado. El Dom carga de arriba a abajo. Personalmente, me gusta poner todas mis js en la parte inferior de la página en lugar de en la cabeza.
Sin embargo, es solo 1 línea de código y sugeriría usarlo solo para estar seguro. también puedes hacerlo aún más corto. $(function() {}
es lo mismo que $(document).ready(function(){})
No entiendo por qué debería usarlo solo para estar seguro; parece que ralentizaría innecesariamente la ejecución. –
porque siempre habrá alguien con alguna configuración de navegador que fallará si no ve lo que quiere o espera. ejecutar '$ (function() {}' una vez no desacelera lo suficiente para que te importe. Mira http://stackoverflow.com/questions/8160014/document-ready-check-slows-down-ie y lee los comentarios para la respuesta aceptada usando '$ (function() {}' tomará alrededor de 2-3ms en promedio. en una nota lateral si usa php puede hacer una función o clase para poner todos los js en 1 archivo en 1 '$ (función() {}' o puede hacerlo en js para. mirar en los patrones de diseño de programación. – Yamiko
- 1. ¿Esperan las secuencias de comandos todavía vale la pena aprender?
- 2. Secuencias de comandos eliminadas con jQuery .load
- 3. Problema con qTip: no se muestran las sugerencias porque los elementos se cargan después de la secuencia de comandos
- 4. jQuery Mobile después de la página se muestra el evento
- 5. ¿Las hojas de estilo externas se cargan antes del HTML?
- 6. Reemplazar todo el documento HTML en contexto
- 7. variables en las secuencias de comandos TOAD
- 8. documento de jQuery listo después de la solicitud de ajax
- 9. Cómo determinar si jQuery se está ejecutando en una página (incluso si jQuery es/después de/el script de detección)
- 10. ¿Las variables de condición todavía necesitan un mutex si está cambiando el valor verificado atómicamente?
- 11. elemento siguiente en todo el documento * * después de cierto elemento
- 12. jQuery, JavaScript, HTML: cómo cargar imágenes después de que todo lo demás se carga?
- 13. ¿Cómo integrar las secuencias de comandos de Sikuli en Selenium?
- 14. Cómo aplicar la fuente global a todo el documento HTML
- 15. ¿Se cargan todas las imágenes de fondo de CSS incluso si no se aplica CSS?
- 16. Eliminar todo el JavaScript de una página HTML
- 17. ¿Las instalaciones de PackageMaker con secuencias de comandos de preinstalación están dañadas en Snow Leopard?
- 18. ¿Cómo pasar el parámetro a las secuencias de comandos ant?
- 19. ¿Se pueden administrar las secuencias de comandos de gancho de Can Git junto con el repositorio?
- 20. Las secuencias de comandos que se ejecutan en jquery.ajax() páginas cargadas ejecutan document.ready demasiado pronto
- 21. Fundamentos de las secuencias de comandos de MongoDB - Cómo
- 22. La interfaz de la interfaz de usuario de Jquery parece fea antes de que se complete el documento.
- 23. Prueba de las secuencias de comandos de Python
- 24. Notificaciones de escritorio de las secuencias de comandos de contenido
- 25. ¿Cómo obtener el contenido de texto de todo el documento?
- 26. ¿Cómo obtengo el HTML de toda la página con jQuery?
- 27. jQuery - Eliminar todo después de un elemento
- 28. Complemento de secuencias de comandos Javascript/plugins?
- 29. ¿Se pueden aplicar selectores jQuery a un elemento en lugar de a todo el documento?
- 30. ¿Cómo puedo agregar encabezados caducados para las secuencias de comandos que no están en mi servidor?
"Técnicamente", sí - "prácticamente", no. Esto ha sido un comportamiento consistente (no definido) para los navegadores durante años. Sin embargo, creo que podría haber algo de magia con 'ready' y frames en IE ... el script aún debería estar * dentro * de la etiqueta body. –
Además, ¿significa "pie de página" '
Al final de '
' –