2012-02-22 9 views
28

Eventuali duplicati:
What is the difference between these jQuery ready functions?
jquery: Choosing a document.ready method

Qual è la differenza tra fare questo

$(function() { 
    $("a").click(function(event){ 
     alert("Thanks for visiting!"); 
    }); 
}); 

e questo

$(document).ready(function(){ 
    $("a").click(function(event){ 
     alert("Thanks for visiting!"); 
    }); 
}); 
+0

L'ex è meno prolisso e, quando ci si abitua al linguaggio, più leggibile. Altrimenti hanno lo stesso effetto. – tvanfosson

risposta

39

Sono uguali. Dai un'occhiata a jQuery .ready() docs. Ecco una citazione dalla documentazione:

Tutti e tre sintassi seguenti sono equivalenti:.

$ (document) .ready (handler)

$() pronto (handler) (questo non è raccomandato)

$ (gestore)

+12

lol. Non smette mai di stupirmi. Down-votato per una risposta corretta e una citazione dai documenti :) –

9

non c'è alcuna differenza di funzionalità tra voi r esempi: entrambi si legano al DOM pronto.

Per riferimento, ci sono due punti in cui è possibile associare il codice jQuery.

Il primo verrà eseguito quando il DOM è pronto (entrambi sono equivalenti):

$(document).ready(function() { 
    // code 
}); 
$(function() { 
    // code 
}); 

La seconda eseguirà quando la pagina ha terminato il caricamento di tutte le immagini, fogli di stile ecc

$(window).on("load", function() { 
    // code 
}); 

L' il secondo è utile quando è necessario ottenere lo width() o height() di un'immagine. Queste proprietà sono disponibili solo dopo che l'immagine è stata completamente scaricata sul sistema client.

Si noti inoltre che $(window).load(fn); è ora obsoleto e non dovrebbe più essere utilizzato.

+0

Ovviamente, oltre al binding, è importante ricordare che a volte il codice di inizializzazione non deve essere associato a nessun evento. Alcuni possono essere eseguiti non appena viene letto, per questo [articolo] (http://encosia.com/dont-let-jquerys-document-ready-slow-you-down/) di [Dave Ward] (http: // encosia.com/about-dave-ward/). – MarkDBlackwell

7

Tutti e tre i seguenti sintassi sono equivalenti:

$(document).ready(handler) 
$().ready(handler) (this is not recommended) 
$(handler) 

http://api.jquery.com/ready/

+4

SE sono equivalenti, perché non è raccomandato? – JorgeeFG