Cuál es la diferencia entre estos dos.
$(document).ready(function(){ ... });
(function(){ ... })();
¿Se llaman ambas funciones al mismo tiempo? Lo sé, document.ready se activará cuando el navegador represente toda la página HTML, pero ¿qué pasa con la segunda función (función de llamada anónima). ¿Espera a que el navegador complete la representación de la página o se llama cada vez que se encuentra?
javascript
jquery
Ashit Vora
fuente
fuente
$(function() {});
es equivalente a$(document).ready(function() {});
Respuestas:
$(document).ready(function(){ ... });
o corto$(function(){...});
Esta función se llama cuando lo
DOM is ready
que significa, puede comenzar a consultar elementos, por ejemplo..ready()
usará diferentes formas en diferentes navegadores para asegurarse de que el DOM realmente esté listo.(function(){ ... })();
Eso no es más que una función que se invoca lo antes posible cuando el navegador está interpretando su
ecma-/javascript
. Por lo tanto, es muy poco probable que pueda actuar con éxitoDOM elements
aquí.fuente
(function(){ ... })();
¿no se ejecuta ningún código JS lo antes posible? Si hubieraalert()
dicho , dentro o fuera del SIAF, ¿no sería el mismo efecto?(function(){...})();
se ejecutará tan pronto como se encuentre en el Javascript.$(document).ready()
se ejecutará una vez que se cargue el documento.$(function(){...});
es un atajo$(document).ready()
y hace exactamente lo mismo.fuente
$(document).ready(function() { ... });
simplemente vincula esa función already
evento del documento, por lo que, como dijiste, cuando el documento se carga, el evento se dispara.(function($) { ... })(jQuery);
en realidad es una construcción de Javascript, y todo lo que hace ese código es pasar eljQuery
objetofunction($)
como parámetro y ejecuta la función, por lo que dentro de esa función,$
siempre se refiere ajQuery
objeto. Esto puede ayudar a resolver conflictos de espacios de nombres, etc.Por lo tanto, el n. ° 1 se ejecuta cuando se carga el documento, mientras que el n. ° 2 se ejecuta inmediatamente, con el
jQuery
objeto nombrado$
como abreviatura.fuente
El siguiente código se ejecutará cuando el DOM (modelo de objeto de documento) esté listo para que se ejecute el código JavaScript.
La mano corta para el código anterior es:
El código que se muestra a continuación es una función JavaScript anónima de invocación automática, y se ejecutará tan pronto como el navegador lo interprete:
La función de auto-invocación jQuery que se muestra a continuación, pasa el objeto global jQuery como argumento para
function($)
. Esto permite$
ser utilizado localmente dentro de la función de auto invocación sin necesidad de atravesar el alcance global para una definición. jQuery no es la única biblioteca que utiliza$
, por lo que reduce los posibles conflictos de nombres.fuente
document.ready se ejecuta después de que DOM está "construido". Las funciones de invocación automática se ejecutan instantáneamente, si se insertan en
<head>
, antes de que se construya DOM.fuente
<head>
, y las reglas no son diferentes después de que se haya construido el DOM inicial.