Le code Javascript jQuery suivant est inclus sur une page autrement vide..click() callback référence la variable locale de la méthode appelante au lieu de la copier par valeur
var element;
$(function() {
for (var i = 0; i < 10; i++) {
element = $('<div>' + i + '</div>');
element.click(function() {
alert(i);
});
$('body').append(element);
}
});
Le comportement souhaité est que ce code devrait générer 10 éléments div numérotés de 0 à 9. Lorsque vous cliquez sur un élément div, un message d'alerte affiche le numéro de l'élément div que vous avez cliqué sur (si un utilisateur clique sur l'élément div étiqueté '4', le popup d'alerte devrait montrer le numéro 4).
La fenêtre d'alerte affiche à la place le chiffre 10, quel que soit l'élément div cliqué.
Comment puis-je modifier ce code pour qu'il se comporte de la manière souhaitée?
Le résultat est 10 et toujours 10 parce que 'I' est un var unique qui est itéré dans votre boucle for. Il finit à 10 à la fin de la boucle à cause de 'i ++'. Est-ce que votre question est plus sur l'extraction d'un nombre utile d'un div cliqué, ou pourquoi «je» se comporte de cette façon lors de la transmission d'une fonction à un gestionnaire d'événements? – artlung