Sembra che la maggior parte dei suggerimenti interessanti e importanti siano già stati menzionati, quindi questo è solo una piccola aggiunta.
Il piccolo suggerimento è la funzione jQuery.each (oggetto, callback) . Probabilmente tutti usano jQuery.each (callback) per sull'oggetto jQuery stesso perché è naturale. La funzione di utilità jQuery.each (oggetto, callback) scorre su oggetti e matrici. Per molto tempo, in qualche modo non ho visto che cosa potesse essere a parte una diversa sintassi (non mi dispiace scrivere tutti i loop di moda), e mi vergogno un po 'di aver realizzato la sua forza principale solo di recente.
Il fatto è che, poiché il corpo del ciclo in jQuery.each (oggetto, callback) è una funzione , si ottiene un nuovo ambito ogni volta nel ciclo, il che è particolarmente conveniente quando si creano chiusure nel ciclo.
In altre parole, un tipico errore comune è fare qualcosa del tipo:
var functions = [];
var someArray = [1, 2, 3];
for (var i = 0; i < someArray.length; i++) {
functions.push(function() { alert(someArray[i]) });
}
Ora, quando invochi le funzioni functions
nell'array, riceverai tre volte un avviso con il contenuto undefined
che molto probabilmente non è quello che volevi. Il problema è che esiste solo una variabile i
e tutte e tre le chiusure si riferiscono ad essa. Al termine del ciclo, il valore finale di i
è 3 ed someArrary[3]
è undefined
. Potresti aggirarlo chiamando un'altra funzione che creerebbe la chiusura per te. Oppure usi l'utilità jQuery che praticamente lo farà per te:
var functions = [];
var someArray = [1, 2, 3];
$.each(someArray, function(item) {
functions.push(function() { alert(item) });
});
Ora, quando invochi le funzioni, ricevi tre avvisi con il contenuto 1, 2 e 3 come previsto.
In generale, non è niente che tu non possa fare da solo, ma è bello averlo.