without w3schools javascript jquery document-ready shorthand

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

Desde http://docs.jquery.com/Plugins/Authoring

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.



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