Il semble que la plupart des conseils intéressants et importants aient déjà été mentionnés, donc celui-ci n'est qu'un petit ajout.
La petite astuce est la fonction jQuery.each (objet, rappel) . Tout le monde utilise probablement le jQuery.each (rappel) pour itérer sur l'objet jQuery lui-même, car il est naturel. La fonction utilitaire jQuery.each (objet, rappel) parcourt les objets et les tableaux. Pendant longtemps, je ne savais pas en quoi cela pouvait servir en dehors d'une syntaxe différente (cela ne me dérange pas d'écrire toutes les boucles façonnées), et j'ai un peu honte de n'avoir réalisé sa force principale que récemment.
Le fait est que puisque le corps de la boucle dans jQuery.each (objet, rappel) est une fonction , vous obtenez une nouvelle portée à chaque fois dans la boucle, ce qui est particulièrement pratique lorsque vous créez des fermetures dans la boucle.
En d'autres termes, une erreur courante typique est de faire quelque chose comme:
var functions = [];
var someArray = [1, 2, 3];
for (var i = 0; i < someArray.length; i++) {
functions.push(function() { alert(someArray[i]) });
}
Maintenant, lorsque vous appelez les fonctions du functions
tableau, vous obtiendrez une alerte trois fois avec le contenu undefined
qui n'est probablement pas ce que vous vouliez. Le problème est qu'il n'y a qu'une seule variable i
et que les trois fermetures s'y réfèrent. Une fois la boucle terminée, la valeur finale de i
est 3 et someArrary[3]
est undefined
. Vous pouvez contourner ce problème en appelant une autre fonction qui créerait la fermeture pour vous. Ou vous utilisez l'utilitaire jQuery qui le fera essentiellement pour vous:
var functions = [];
var someArray = [1, 2, 3];
$.each(someArray, function(item) {
functions.push(function() { alert(item) });
});
Maintenant, lorsque vous appelez les fonctions, vous obtenez trois alertes avec le contenu 1, 2 et 3 comme prévu.
En général, ce n'est rien que vous ne pourriez pas faire vous-même, mais c'est agréable à avoir.