Ich habe einen variablen Umfang Problem, und ich verstehe nicht, warum dies der Fall ist und wie man es loswerden:Binding Hörer innerhalb einer for-Schleife: variable Umfang Mißverständnis
var items = ['foo', 'bar'];
for (var index in items) {
var item = items[index];
var selector = '.'+item+'-class';
$(selector).bind('click', function() {
console.log("class: "+$(this).attr('class'));
console.log("selector: "+selector);
console.log("item: "+item);
});
}
der Auffassung, dass dieser Code ausführen sich über das folgende HTML:
<div class="foo-class">Foo</div>
<div class="bar-class">Bar</div>
Ein Klick auf „foo“ erinnert an die richtige Klasse (zB „foo-Klasse“) in der ersten Zeile, aber der Wähler und der Einzelteilname bar folgenden beziehen. Ich denke, dass das Problem darin besteht, dass die zweite Iteration der Schleife die Variablen zurücksetzt, die in der ersten verwendet wurden.
Ich dachte, dass die Deklaration innerhalb der Schleife deutlich ihren Geltungsbereich auf dieser Ebene deklarieren sollte. Liege ich falsch ? Warum ? Wie kann ich es reparieren ?
Ich bin nicht auf der Suche nach einem Workaround, ich will etwas sauberes und ein besseres Verständnis von JavaScript Variable Umfang Mecanism.
Hier die jsfiddle.
Danke!
nette Antwort, half mir auch – Ghokun
Danke, behoben und verstanden +1 – AsTeR