2010-11-05 31 views
10

Permítanme aclarar esto. De acuerdo con las mejores prácticas, debemos inicializar jQuery en la parte inferior de la página. Si hacemos eso, cualquier referencia al objeto jQuery (es decir, $ o jQuery) sobre la referencia será nula. Sin embargo, como para $(document).ready(), la razón por la que alguna vez se necesita esta función jQuery es cuando desea retrasar la ejecución de una función después de que la página se haya cargado. Esto parece ser un conflicto.

¿Cómo utilizo la funcionalidad de $(document).ready() en la parte superior de la página y todavía hago referencia a jQuery en la parte inferior de la página? Creo que jQuery debería inicializarse en la parte superior de la página por esta misma razón.

+0

Tienes razón. Debe colocar su referencia jQuery inicial antes de usar $, de modo que si usa $ en la parte superior de la página, ahí debe hacer referencia a la biblioteca. – willoller

+0

Sí, el consejo de eficiencia es tener todos los javascript en la parte inferior de la página. Aún puede tener la inicialización de jQuery como la parte superior de este javascript y usar $ (function() {...}); DESPUÉS de que –

+0

Lo que más me molesta es el marco de Telerik MVC necesita hacer referencia a su javascript y sus marcos dependientes (es decir: jquery) en la parte inferior de la página para que sus controles funcionen correctamente. He decidido usar window.onload() por ahora. – burnt1ce

Respuesta

1

Simplemente ponga $(document).ready debajo de donde inicializa jQuery, independientemente de dónde se encuentre.

En realidad, aunque debe poner todos sus JS en la parte inferior, incluso $(document).ready.

+3

Eso no es muy fácil de hacer cuando se' re escribir controles. – burnt1ce

+2

Bueno, no mencionó eso en la pregunta original: P. – Loktar

3

Si va a colocar sus scripts en la parte inferior de la página por razones de eficiencia, y no hay más elementos (más allá de </body> and </html>), ni siquiera necesitará usar $(document).ready(...);.

La colocación de su código en la parte superior de la página tiene sentido semántico, y el tiempo de carga "ahorros" es despreciable en la mayoría de los casos. Realmente solo hace una diferencia cuando los scripts son enormes o cuando los scripts están en otro servidor que puede o no estar activo.

Si está vivo-linking jQuery, sugeriría ponerlo en la parte inferior de la página. Si usas jQuery de enlace local, la parte superior debería estar bien. Solo asegúrate de usar código minimizado.

+1

Espera ... ¿qué? Tenía la impresión de que document.ready era un poco más robusto que pegar código al final de la etiqueta del cuerpo. –

+1

@SkippyChalmers, 'document.ready' es más robusto que' body.onload', pero * both * son eventos que se activan cuando DOM ha terminado de analizar/ejecutar elementos en la página. Si coloca un script al final de la página, esencialmente habrá hecho lo mismo. La única diferencia será que todos los scripts se ejecutarán antes de la devolución de llamada de carga, lo que podría ser importante si el código de ejecución se basa en una biblioteca que no se ha cargado. – zzzzBov

Cuestiones relacionadas