javascript - funcion - jquery cdn
¿Qué sucede cuando tiene dos llamadas jQuery $(documento).ready en dos archivos JavaScript utilizados en la misma página HTML? (5)
Tengo una pregunta sobre jQuery $(document).ready
Digamos que tenemos una página HTML que incluye 2 archivos JavaScript
<script language="javascript" src="script1.js" ></script>
<script language="javascript" src="script2.js" ></script>
Ahora digamos en ambos archivos de script, tenemos $(document)
siguiente manera
Dentro de script1.js :
$(document).ready(function(){
globalVar = 1;
})
Dentro de script2.js :
$(document).ready(function(){
globalVar = 2;
})
Ahora mis preguntas son:
- ¿Se dispararán estas dos funciones de evento preparado?
- En caso afirmativo, ¿cuál será el orden en que serán despedidos, ya que el documento estará listo al mismo tiempo para los dos?
- ¿Se recomienda este enfoque O deberíamos idealmente tener solo 1 $ (documento) .Ready?
- ¿El orden de ejecución es el mismo en todos los navegadores (IE, FF, etc.)?
Gracias.
- ¿Se dispararán estas dos funciones de evento preparado?
Sí, ambos serán despedidos.
- ¿Cuál será el orden en que serán despedidos, ya que el documento estará listo al mismo tiempo para los dos?
En la forma en que aparecen (de arriba a abajo), porque el evento listo se disparará una vez, y todos los oyentes del evento recibirán notificaciones una tras otra.
- ¿Se recomienda este enfoque O deberíamos idealmente tener solo 1 $ (documento) .Ready?
Está bien hacerlo así. Si puede tenerlos en el mismo código de bloque, sería más fácil de administrar, pero eso es todo. Actualización : aparentemente olvidé mencionar que aumentará el tamaño de su código JavaScript si lo hace en múltiples archivos.
- ¿El orden de ejecución es el mismo en todos los navegadores (IE, FF, etc.)?
Sí, porque jQuery tiene en cuenta la normalización entre navegadores.
- Ambos serán despedidos
- El valor de la variable será 2 una vez que todo el polvo se haya asentado.
- Lo principal que no se recomienda es usar 2 archivos JS diferentes, como Google PageSpeed, y Yahoo YSlow recomienda, lo mejor es tener todos sus códigos Javascript en el mismo archivo. en cuanto a los mismos manejadores de eventos, bueno, honestamente, no veo ninguna razón para hacerlo, y solo hará que la legibilidad de su código sea más lamentable.
- No tengo respuesta para eso.
Puede contar con que ambos manejadores se ejecuten en orden de inclusión de script y que globalVar
sea 2
después de la segunda referencia de script, en cualquier navegador actual.
Si desea un control total, recomiendo encarecidamente solo un $ (documento) .ready ();
Si carga partes parciales de HTML a través de ajax y la respuesta ajax incluye un script $ (document) .ready (); - y desea disparar $ (document) .ready (); desde script1.js, script2.js y demás en la devolución de llamada ajax .. Tienes que duplicar MUCHAS veces el código ...
¡Buena suerte!
/ $ (ventana). listo (); ;)
Vea aquí: jQuery - ¿es malo tener múltiples $ (documento) .ready (función () {}); y aquí: Tutoriales: Múltiple $ (documento) .Ready ()
- Sí
- Orden de adjuntar jQuery mantiene internamente una lista
readyList
con objetosDeferred
. - Es en parte una cuestión de gusto. Tener un controlador listo le dará una buena visión general de todo lo que está sucediendo, mientras que múltiples (es decir, uno por archivo incluido) harán que su código sea mucho más modular (es decir, puede incluir o eliminar un archivo
.js
y asegurarse de que proporciona y enlaza su propio controlador listo). - Sí - orden de adjuntar