¿Es la siguiente taquigrafía para $(document).ready
?
(function($){
//some code
})(jQuery);
Veo que este patrón se usa mucho, pero no puedo encontrar ninguna referencia al mismo. Si es una forma abreviada de $(document).ready()
, ¿hay alguna razón particular por la que podría no funcionar? En mis pruebas parece que siempre se dispara antes del evento listo.
javascript
jquery
document-ready
shorthand
Mark Brown
fuente
fuente
var somevar;
. Ej. ) No cambiará el contenido de las variables del mismo nombre fuera de la funciónRespuestas:
La abreviatura de
$(document).ready(handler)
es$(handler)
(dondehandler
es una función). Ver aquí .El código en su pregunta no tiene nada que ver
.ready()
. Más bien, es una expresión de función invocada inmediatamente (IIFE) con el objeto jQuery como argumento. Su propósito es restringir el alcance de al menos la$
variable a su propio bloque para que no cause conflictos. Por lo general, ve el patrón utilizado por los complementos de jQuery para asegurarse de eso$ == jQuery
.fuente
iife
o pase a la famosa publicación de blog de Cowboy Alman . Detalles ... sheesh.La taquigrafía es:
fuente
$
. Es posible que desee agregar eso. Es útil parajQuery(function($, undefined) {});
$(document).ready(function(){ });
$
gratis como primer argumento.La taquigrafía correcta es esta:
El código que publicaste ...
... crea una función anónima y la ejecuta inmediatamente
jQuery
al pasarla como arg$
. Todo lo que efectivamente hace es tomar el código dentro de la función y ejecutarlo como de costumbre, ya$
que ya es un alias parajQuery
. :REfuente
Esto no es una abreviatura para
$(document).ready()
.El código que publicó recuadra el código interno y hace que jQuery esté disponible
$
sin contaminar el espacio de nombres global. Esto se puede usar cuando desea usar tanto prototype como jQuery en una página.Documentado aquí: http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/#use-an-immediately-invoked-function-expression
fuente
Estas líneas específicas son el contenedor habitual para los complementos de jQuery:
"... para asegurarse de que su complemento no colisione con otras bibliotecas que puedan usar el signo de dólar, es una buena práctica pasar jQuery a una función de ejecución automática (cierre) que lo asigna al signo de dólar para que pueda ' t será sobrescrito por otra biblioteca en el ámbito de su ejecución ".
Desde http://docs.jquery.com/Plugins/Authoring
fuente
La abreviatura segura multi-framework para ready es:
Esto se debe a que jQuery no es el único marco que utiliza las variables
$
yundefined
fuente
(function($){ ... })(jQuery);
ready
, sino que se llamará de inmediatoIncluso una variante más corta es usar
donde
$
significa jQuery y()=>{}
se llama 'función de flecha' que heredathis
del cierre. (Para quethis
probablemente tengas enwindow
lugar dedocument
).fuente
¿Qué hay de esto?
fuente