2009-07-21 10 views
8

He visto cuatro formas diferentes de decirle a jQuery que ejecute una función cuando el documento está listo. ¿Son todos equivalentes?Cuatro variaciones de jQuery ready(): ¿cuál es la diferencia?

$(document).ready(function() { 
    alert('$(document).ready()'); 
}); 

$().ready(function() { 
    alert('$().ready()'); 
}); 

$(function() { 
    alert('$()'); 
});  

jQuery(function ($) { 
    alert('jQuery()'); 
}); 
+2

por cierto, creo que '$ (ventana). ready (...) 'también funciona. – geowa4

Respuesta

11

No hay diferencia.

$ es lo mismo que jQuery. Si ve la fuente no modificada, verá var $ = jQuery = ... o algo por el estilo.

La función jQuery comprueba el tipo de que es parámetro, si se trata de una función, que trata de la misma como $(document).ready(...)

Calling jQuery sin un parámetro por defecto a usar document. Entonces $() y $(document) son idénticos. Pruébalo en Firebug.

+2

Esto no explica la segunda mierda de – Draemon

+0

, pensé que las tenía todas. Espere. – geowa4

+0

editado para incluir el segundo. – geowa4

4

re: Comentarios de Geroge IV con respecto a $() == $ (documento) es correcto. Desde la fuente unminified (init es lo que consiga llamar internamente):

init: function(selector, context) { 
    // Make sure that a selection was provided 
    selector = selector || document; 

también de la fuente, para respaldar las conversaciones anteriores:

// HANDLE: $(function) 
    // Shortcut for document ready 
    } else if (jQuery.isFunction(selector)) 
     return jQuery(document).ready(selector); 

esto debe ser wiki de la comunidad. Siempre he estado interesado en el funcionamiento interno de jQuery, ahora que he tenido la excusa para empezar a buscar :-)

+0

buena caza @Davd! – geowa4

+0

por cierto, "esto debería ser wiki de la comunidad" <- entonces ¿por qué no? – geowa4

+0

Ah no sé cómo hacerlo o si puedo, pero he abierto uno que enlaza con esto :-D –

0

también debe mencionarse , ese símbolo que pasa a la función se usará dentro de la función. Por ejemplo:

$(function(jQuery) { 
    // now I can use jQuery instead $ 
    jQuery("body").append("<div></div>"); // adds div to the end of body element 
}); 

si desea utilizar $ - puede dejar parámetro de función en este situación de vacío

El ejemplo real que puede encontrar aquí http://jsfiddle.net/yura_syedin/BNgd4/

Cuestiones relacionadas