2011-08-28 9 views
7

antes de escuchar acerca de las funciones de auto ejecución Siempre solía hacer esto:¿Las funciones de autoejecución se ejecutan en dom ready?

$(document).ready(function() { 
    doSomething(); 
}); 

function doSomething() 
{ 
    // blah 
} 

¿Una función de auto ejecución de tener el mismo efecto? funcionará en Dom Ready?

(function doSomething($) { 
    // blah 
})(jQuery); 
+0

posible duplicado de [jQuery document.ready vs auto llamando a la función anónima] (http://stackoverflow.com/questions/3259496/jquery-document-ready-vs-self-calling-anonymous-function) –

Respuesta

9

Nope. Una función autoejecutable se ejecuta cuando el motor de Javascript lo encuentra.

Sin embargo, si coloca el código completo al final de su documento antes de la etiqueta de cierre </body> (que es highly recommended), entonces no tiene que esperar que DOM esté listo, ya que lo ha pasado automáticamente.


Si lo que quieres es a su alcance $ variable y que no quieren mover el código a la parte inferior de la página, puede utilizar esto:

jQuery(function($){ 
    // The "$" variable is now scoped in here 
    // and will not be affected by any code 
    // overriding it outside of this function 
}); 
1

Se ganó' t, se ejecutará tan pronto como se ejecute el archivo JavaScript.

0

No, las funciones de javascript de autoejecución se ejecutan allí mismo.

Si desea crear una función listo DOM, escribir lo siguiente:

$(function() { 
    // this will run on DOM ready 
}); 

¿Qué es una abreviatura de:

$(document).ready(function() { 
}); 
0

No, la función de auto-ejecución de ejecutar inmediatamente después de que " declararlo en tu código. Incluso si está ubicado en un archivo .js externo.

En su ejemplo, hay una posibilidad de que su función se ejecutará y el valor de jQuery es indefinido. Si desea que su código para ser ejecutado en domready, seguir utilizando

$(document).ready(function(){ 
    doSomething(); 
}); 

o

$(function(){ 
    doSomething(); 
}); 

o incluso

window.onload = function(){ 
    doSomething(); 
} 
+1

that's onLoad, que no es equivalente con DOM listo! –

+0

@KARASZI tiene razón. DOM Ready se dispara antes de onLoad. OnLoad solo se activa cuando todo está cargado (imágenes, etc.): https://developer.mozilla.org/en/DOM/window.onload. –

0

$(document).ready(function() { ... }); simplemente une esa función al evento listo del documento, Entonces, como dijiste, cuando el documento se carga, el evento se desencadena.

(function($) { ... })(jQuery); 

es en realidad una construcción de Javascript, y todo lo que pieza de código hace es pasar el objeto jQuery en función de ($) como parámetro y ejecuta la función, por lo que dentro de esa función, $ siempre se refiere a la jQuery objeto. Esto puede ayudar a resolver conflictos de espacios de nombres, etc.

Así # 1 se ejecuta cuando se carga el documento, mientras que # 2 se ejecuta inmediatamente, con el objeto jQuery llamado $ como forma abreviada

$(document).ready(function(){ ... }); or short $(function(){...}); 

Esta función es llamada cuando el DOM está listo lo que significa, que puede comenzar a consultar elementos, por ejemplo. .ready() usará diferentes formas en diferentes navegadores para asegurarse de que el DOM esté realmente listo.

(function(){ ... })(); 

Eso es otra cosa que una función que llama a sí mismo tan pronto como sea posible cuando el navegador está interpretando su ECMA-/javascript. Por lo tanto, es muy poco probable que pueda actuar con éxito en los elementos DOM aquí.

jQuery document.ready vs self calling anonymous function

+0

utilice el código y los botones de enlace –

+0

¿Código y botones de enlace? –

+0

sí, están por encima de la publicación 'textarea' si no está en modo móvil. –

Cuestiones relacionadas