javascript - w3schools - $(documento).ready taquigrafía
document.ready javascript w3schools (8)
Estas líneas específicas son el envoltorio habitual de 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 alcance de su ejecución ".
(function( $ ){
$.fn.myPlugin = function() {
// Do your awesome plugin stuff here
};
})( jQuery );
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 a él. Si es una abreviatura de $(document).ready()
, ¿existe alguna razón en particular por la que no funcione? En mis pruebas parece que siempre se dispara antes del evento listo.
Esto no es una abreviatura de $(document).ready()
.
El código que usted publicó contiene el código interno y hace que jQuery esté disponible como $
sin contaminar el espacio de nombres global. Esto se puede usar cuando se quiere 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
La abreviatura de $(document).ready(handler)
es $(handler)
(donde handler
es una función). Ver here
El código en su pregunta no tiene nada que ver con .ready()
. Más bien, es una expresión de función invocada de inmediato (IIFE) con el objeto jQuery como su argumento. Su propósito es restringir el alcance de al menos la variable $
a su propio bloque para que no cause conflictos. Normalmente ve el patrón utilizado por los complementos de jQuery para garantizar que $ == jQuery
.
La taquigrafía correcta es esta:
$(function() {
// this behaves as if within document.ready
});
El código que has publicado ...
(function($){
//some code
})(jQuery);
... crea una función anónima y la ejecuta inmediatamente con jQuery
se pasa 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 para jQuery
. :RE
La taquigrafía es:
$(function() {
// Code here
});
La taquigrafía segura para múltiples marcos es:
jQuery(function($, undefined) {
// $ is guaranteed to be short for jQuery in this scope
// undefined is provided because it could have been overwritten elsewhere
});
Esto se debe a que jQuery no es el único marco que usa las variables $
y undefined
Que hay de esto
(function($) {
$(function() {
// more code using $ as alias to jQuery
// will be fired when document is ready
});
})(jQuery);
Variante aún más corta es utilizar
$(()=>{
});
donde $
representa jQuery y ()=>{}
se denomina "función de flecha" que hereda this
del cierre. (De modo que en this
probablemente tengas window
lugar de document
).