2010-08-20 27 views
57

Eventuali duplicati:
what is difference of $(function(){ }); and $(document).ready(function() { }) ;?

Quali sono le differenze tra $(document).ready(function(){}) vs $(function(){}) e dovrebbero io scrivilo nel modulo $ o nel nuovo modo jQuery(document).ready(function(){ })?

Se ho carico di google api ed è google.setOnLoadCallback(function() { un modo migliore? o è la stessa cosa?

ho anche visto gente usa $(function($){})

Qualcuno può aiutarmi, mi sono perso. Mi infastidisce quando non conosco il codice che scrivo. Credo che dovrei leggere attraverso la biblioteca. Il tutto viene definito come la stessa cosa?

+0

esatto duplicato, http://stackoverflow.com/questions/2662778/what-is-difference-of-function-and-document-readyfunction – Starx

risposta

79

I due modi sono equivalenti, personalmente preferisco il secondo, $(function() {}); è solo un shortcut per documenti pronti.

Per quanto riguarda il costrutto new jQuery(document)..., non è necessario utilizzare l'operatore new, jQuery lo utilizzerà internamente in caso contrario.

L'argomento che la funzione di gestione ready riceve è l'oggetto jQuery stesso.

Questo è abbastanza utile quando si deve eseguire jQuery in modalità di compatibilità con altre biblioteche, ad esempio:

jQuery(function ($) { 
    // use $ here 
}); 

L'argomento $ all'interno del callback farà riferimento all'oggetto jQuery, al di fuori, che la funzione potrebbe fare riferimento a un'altra libreria come PrototypeJS.

+2

penso volesse dire nuovo come 'il nuovo modo' JQuery (documento) ... –

+0

A partire da jQuery 3.0, è raccomandata solo la sintassi '$ (function() {})'; le altre sintassi funzionano ancora ma sono deprecate. Vedi https://api.jquery.com/ready/ – LazerBass

25
  • $(document).ready(function() {});
  • $(function() {});

Le due istruzioni sono in realtà la stessa esatta. Quindi la seconda chiamata è solo una scorciatoia per la prima.

La notazione $ è di nuovo solo una scorciatoia per jQuery. Se hai caricato jQuery nel tuo sito web puoi utilizzare entrambi. Soprattutto se non carichi altri librerie JS, che forse usano anche il segno $. Che ci porta al tuo citato

(function($){ 
}(jQuery)); 

chiamata. Quello che viene fatto qui è assicurarsi che all'interno della propria espressione di funzione creata il segno $ faccia riferimento all'oggetto jQuery. Stai chiamando quella funzione anonima (che ha $ come parametro) e passa l'oggetto jQuery.

2

Incoraggio a leggere alcuni articoli che sono molto utili per capire qualcosa in jQuery (e ovviamente in javascript), questo articolo spiega come creare un plugin jQuery, ma leggendolo capirai alcune cose basilari e importanti, come chiusure streghe è il significato in questo (funzione ($) {} (jQuery)); dichiarazione.

http://www.authenticsociety.com/blog/jQueryPluginTutorial_Beginner

Problemi correlati