2012-05-08 14 views
5

Ho appena scaricato l'ebook jQuery Succinentemente gratuito (here) da Syncfusion e ho iniziato a guardare negli esempi.jQuery spiegazione sintassi sintetica

Vedo un sacco di questo tipo di cose:

<script> (function ($) 
{ 
    $('a').mouseenter(
     function() { alert(this.id); }); 
})(jQuery); 
</script> 

Non sono sicuro che il motivo per cui l'autore sta usando questa sintassi. L'oggetto $ viene passato alla funzione anonima? Perché? E qual è il (jQuery) che segue la funzione anonima?

È semplicemente un modo per evitare conflitti con altre librerie? Mi sembra che questi esempi possano essere scritti molto più "succintamente" :)

Grazie.

risposta

7

Crea una chiusura dove $ === jQuery anche se è stato utilizzato $.noConflict() per rimuovere il jQuery globale $.

Ciò consente di utilizzare sempre $ senza preoccuparsi se l'utente è ad es. anche utilizzando un framework come prototipo che utilizza anche $.

La chiusura ha anche il vantaggio che le variabili/funzioni non sono globali a meno che non esplicitamente renderli globale (non utilizzando var e funzioni per l'oggetto window o this allegando)

+0

Solo pochi secondi prima di me. : / –

4

Sì, questo è un modo succinto per evitare conflitti jQuery con altre librerie. È conosciuto come una "chiusura". In altre parole, la variabile $ ha lo scopo di tale funzione e può essere utilizzata senza alcun danno al di fuori di essa.