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 ).