2011-01-22 11 views
5

ho lavorato con JQuery da qualche tempo e ho sempre usato il seguente al initalise mia javascript:

$(document).ready(function() { 
// Initalisation logic 
}); 

Tuttavia, di recente ho notato un molti esempi che utilizzano le seguenti:?

$(function() { 

}); 

cosa è la differenza

Grazie

+0

Grazie a tutti per il fantastico feedback rapido !! – Mantisimo

risposta

8

Fondamentalmente, non ce n'è uno. Il formato $(...) è una scorciatoia. Vedi the API docs per jQuery() per i dettagli.

Mi piace usare in questo modo:

jQuery(function($) { 
    // ...all of my jQuery-specific code here... 
}); 

... perché poi se ho bisogno di, posso usare noConflict se finisco dover mescolare qualcosa nella pagina che vuole anche il simbolo $ , ma posso ancora usare $ nel mio codice (perché jQuery passa se stesso nel callback come primo argomento, e come puoi vedere sto accettando quell'argomento come $ nella mia funzione di callback   — e così che le ombre qualsiasi simbolo globale $ che un'altra libreria potrebbe usare). Quanto sopra ha anche il vantaggio che posso avere simboli globali a il mio codice (var s all'interno della funzione anonima) che non sono effettivamente globali.

+0

Con quale frequenza mescoli qualcosa nella pagina che desidera il simbolo $? Sono solo curioso dal momento che non succede spesso dove lavoro. – finneycanhelp

+0

@finneycanhelp: Non di rado, cerco di evitare di mischiare troppe librerie. Ad esempio, se lentamente migriamo un sito da jQuery a Prototype (o MooTools) o da quelli a jQuery, 'noConflict' è importante, perché anche Prototype e MooTools usano e si basano sul simbolo' $'. –

+0

Sicuro! Ruby On Rails e Prototype vengono in mente. :) – finneycanhelp

2

La differenza è una questione di stile. Uno è solo una scorciatoia dell'altro. :) Vedere http://api.jquery.com/jQuery/ vicino al fondo in cui si dice "Esegue la funzione quando il DOM è pronto per essere utilizzato"

Quando ho chiesto a una delle persone jQuery UI quello che preferivano, ha detto che preferiva il modo più dettagliato. Tuttavia, le persone nel mio negozio utilizzano questa versione:

$(function() { 

}); 
1

La differenza è che il primo è più leggibile. Quindi per favore basta usare questo.

$(document).ready(function() { 
// Initalisation logic 
}); 
+0

D'accordo che '$ (document) .ready (function() {...})' è più leggibile di '$ (function() {...})', ma penso 'jQuery (function ($) {...});' è perfettamente leggibile Come qualsiasi idioma, devi impararlo una volta. –

+1

Non lo so, stai passando una funzione a jQuery, ma non c'è alcun suggerimento jQuery avrà a che fare con questa funzione: – orlp

+0

Come ho detto, come qualsiasi idioma, devi impararlo una volta.Ora, se tu (come me) pensi che la funzione 'jQuery' abbia ** modo ** troppe * cose completamente diverse * che fa a seconda di cosa passi (anche facendo cose diverse quando passi delle stringhe, a seconda di il contenuto della stringa), nessun argomento lì, è uno dei miei animaletti a proposito di jQuery. Ma almeno ha solo la * cosa * che fa quando si passa da soli a una funzione. –

Problemi correlati