Parece que a maioria das dicas interessantes e importantes já foram mencionadas, portanto esta é apenas uma pequena adição.
A pequena dica é a função jQuery.each (objeto, retorno de chamada) . Todo mundo provavelmente está usando a função jQuery.each (retorno de chamada) para iterar sobre o próprio objeto jQuery porque é natural. A função do utilitário jQuery.each (objeto, retorno de chamada) itera sobre objetos e matrizes. Por um longo tempo, de alguma forma, não vi o que poderia ser, além de uma sintaxe diferente (não me importo de escrever todos os loops criados), e estou um pouco envergonhado por ter percebido sua principal força apenas recentemente.
O fato é que, como o corpo do loop no jQuery.each (objeto, retorno de chamada) é uma função , você obtém um novo escopo a cada vez no loop, o que é especialmente conveniente quando você cria fechamentos no loop.
Em outras palavras, um erro comum típico é fazer algo como:
var functions = [];
var someArray = [1, 2, 3];
for (var i = 0; i < someArray.length; i++) {
functions.push(function() { alert(someArray[i]) });
}
Agora, quando você invocar as funções na functions
matriz, receberá um alerta três vezes com o conteúdo undefined
que provavelmente não é o que você queria. O problema é que existe apenas uma variável i
e todos os três fechamentos se referem a ela. Quando o loop termina, o valor final de i
é 3 e someArrary[3]
é undefined
. Você poderia contornar isso chamando outra função que criaria o fechamento para você. Ou você usa o utilitário jQuery, que basicamente o faz por você:
var functions = [];
var someArray = [1, 2, 3];
$.each(someArray, function(item) {
functions.push(function() { alert(item) });
});
Agora, quando você invoca as funções, recebe três alertas com o conteúdo 1, 2 e 3 conforme o esperado.
Em geral, não é nada que você não possa fazer sozinho, mas é bom ter.