J'ai une série de divs dans un motif d'en-tête/corps, où un clic sur l'en-tête montrera le corps en question.jQuery: Définir le clic depuis la boucle du tableau
Tout cela se passe avec .cliquez initialisé à la page ... prêt
Plutôt que de le faire (ce qui fonctionne très bien, mais est une douleur):
$('#show_fold_ping').click(function(){ ShowArea('#fold_ping') });
$('#show_fold_http').click(function(){ ShowArea('#fold_http') });
$('#show_fold_smtp').click(function(){ ShowArea('#fold_smtp') });
$('#show_fold_pop3').click(function(){ ShowArea('#fold_pop3') });
...
Je suis en train de le faire:
var Areas = ['ping','http', 'smtp', 'pop3'];
for(var i in Areas){
Area = '#show_fold_'+Areas[i];
$(Area).click(function(){ alert(Area); /* ShowArea(Area); */ });
}
Le problème que j'ai est que tous semblent être initialisés au dernier. IE: Si pop3 est le dernier, un clic sur #show_fold_ [any] alertera '# show_fold_pop3'.
Cela semble être très simple. Suis-je en train de manquer quelque chose d'évident, ou y a-t-il un problème avec la transmission d'une chaîne à jQuery que je ne connais pas?
Edit:
Hey, ce sont tous les grands. J'ai lu un peu sur les fermetures et les fonctions auto-invoquant, et (kindasorta) l'obtenir.
Jusqu'ici, j'ai ceci, mais le clic ne semble pas être lié correctement. Area alertera avec la valeur correcte, mais pas de clic de liaison. Est-ce que j'ai encore des problèmes de portée avec Area ou est-ce que je suis tout à fait hors sujet?
$(function(){
Areas = ['ping','http', 'smtp', 'pop3', 'imap', 'ftp', 'dns', 'tcp', 'database', 'seo'];
for(var i = 0; i < Areas.length; i++){
(function (Area) {
alert(Area);
$("#show_fold_"+Area).click(function(){ alert('x'); });
})(Areas[i]);
}
});
Ne devrait pas $ ("# pli _" + Zone) .cliquez (...) être $ ("# show_fold _" + Zone) .cliquez (...)? –
Oui! Merci - c'est tout. Donc concentré sur la syntaxe je suis allé sémantiquement aveugle = o) – Eli