La fonction de liaison de plusieurs éléments avec Jquery
J'ai ce petit problème avec jquery: j'ai besoin de faire quelque chose comme ceci:
$(document).ready(function(){
links = {};
links.a = "Link a";
links.b = "Link b";
links.c = "Link c";
for (x in links){
$("#" + x).css("border","1px solid #000");
$("#" + x).click(function(){
alert(x);
});
}
});
</script>
<div id="a">a</div><br />
<div id="b">b</div><br />
<div id="c">c</div><br />
De sorte que lorsque vous cliquez sur la div#a, vous obtiendrez "Lien" alerte, "Link b" sur le div#b et ainsi de suite...
Le problème est que si vous exécutez ce code, en cliquant sur chaque élément de donner l'alerte("Lien c"), comme le résultat, il semble que seule la dernière fonction de la variation est attribuée à chaque div...
Bien sûr, je peux le pirater en modifiant la fonction pour travailler avec les div id et à l'aide de $(this), mais pour cursiosity: est-il un moyen de faire de ce cycle de travail? Par la création et l'affectation d'une nouvelle fonction à chaque élément en fonction?
Thx d'avance...
$('#'+x).css('border', '1px solid #000').click(fn);
OriginalL'auteur Alekc | 2009-05-15
Vous devez vous connecter pour publier un commentaire.
Utiliser une closure: ("cette" solution est plus élégante, mais je poste ceci car un maintenant supprimé réponse a une fermeture de la solution qui ne fonctionne pas)
OriginalL'auteur Sam Hasler
la bonne chose à propos de jQuery est qu'il permet le chaînage et la liaison de plusieurs éléments comme css.
OriginalL'auteur Big J
Je crois que c'est ce que vous êtes après:
OriginalL'auteur duckyflip
De Travail Démo http://jsfiddle.net/FWcHv/
dans vous code vous appelez jQuery constructeur combien de fois j'ai.e
$('#a')
que$('#b')
et$('#c')
au lieu de cela, vous devez appeler comme$('#a,#b,#c')
Dans mon code j'ai passé par tous les id à l'aide de $.chaque et combinés entre eux et à la prochaine étape, j'ai utilisé
$('#a,#b,#c')
stockés dans la variablex
pour rendre le code optimisé et facile.j'ai aussi fait un chèque que si
links{}
est vide, il ne sera pas procédé à l'aide de la variablei
OriginalL'auteur Tushar Gupta
OriginalL'auteur Ben Koehler
Vous avez besoin d'utiliser "ce".
OriginalL'auteur gradbot
OriginalL'auteur
De voir que vous êtes coder en dur les éléments pour être effectué de toute façon, vous pourriez aussi bien le faire de cette façon que c'est probablement plus rapide et c'est plus propre, de l'OMI:
Edit: je n'ai pas vu la dernière partie de votre question... Désolé. Vous pouvez également le faire:
OriginalL'auteur KyleFarris
Essayez d'utiliser:
🙂
OriginalL'auteur DatPT