Comment stocker les variables locales en jQuery cliquez sur fonctions?
Je suis à essayer de comprendre comment stocker externe des valeurs de variables dans les fonctions créées au cours de jQuery événement click (). Voici un exemple de code, je travaille avec maintenant.
for(var i=0; i<3; i++){
$('#tmpid'+i).click(function(){
var gid = i;
alert(gid);
});
}
<div id="tmpid0">1al</div>
<div id="tmpid1">asd</div>
<div id="tmpid2">qwe</div>
Donc ce qui se passe c'est que les événements sont attacher correctement, mais la valeur de 'gid' est toujours la dernière valeur incrémentée de "je". Je ne suis pas sûr de la façon de configurer la variable privée dans cette situation.
OriginalL'auteur Geuis | 2009-09-28
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer une de fermeture et d'attribuer
i
à une variable locale de la fermeture. Legid
variable sera alors attribué la valeur dei
au point que la fermeture a été créé plutôt que lorsque la fonction est exécutée.S'agit-il? Je suis assez nouveau dans le Javascript, mais mes scripts Greasemonkey ont tout à fait un peu de JQuery boucles et cela semblait un moyen naturel pour traiter les fonctions
Je vous remercie. J'ai vu ce modèle avant de, première fois que j'ai couru en combien il est utile.
Génial ! Thx a lot
OriginalL'auteur Rich Seller
il y a beaucoup de façons de le faire, celui-ci fonctionne et semble facile.
modifier
d'une autre manière:
OriginalL'auteur cloud
Vous avez créé une fermeture, où la variable "i" est partagé entre plusieurs gestionnaires de clic.
Depuis Javascript n'a pas de bloc de portée, vous aurez besoin de passer du "je" à une nouvelle fonction de sorte qu'il est copié par la valeur d'une nouvelle instance:
Voici une autre question similaire:
JavaScript à l'intérieur fermeture à boucle – simple exemple pratique
OMG, j'ai vraiment mal compris Javascript portée. Il n'a pas de bloc de portée. J'ai édité ma réponse, mais vous pouvez certainement utiliser les données() la méthode - c'est une jolie manière de transmettre les données autour.
OriginalL'auteur Jeff Meatball Yang
Sinon, le premier argument de la souris (ou de liaison) pour jQuery est un objet qui sont attachées à l'événement en tant que données.
Je trouve que c'est un peu plus lisible que la fermeture de la solution, mais il revient au goût.
OriginalL'auteur Borden
J'ai lu de retour sur jQuery natif de données (). Je l'ai fait et cela fonctionne aussi bien. Son de cacher certains de la fonctionnalité réelle de la façon dont les fermetures sont en cours de manipulation, mais sa simple et assez propre à mettre en œuvre.
OriginalL'auteur Geuis