Я хочу передать текущую итерацию цикла foreach на событие click, но он возвращает "undefined" - но почему?
for (var i = 0; i < __ARR_selectors.length; i++) {
__ARR_selectors[i].click( function(e, i) {
console.log(i); //returns undefined
}
Попробуй это:
for (var i = 0; i < __ARR_selectors.length; i++) {
(function (i) {
__ARR_selectors[i].click( function() {
console.log(i); //returns undefined
});
})(i);
}
Проблема с вашим кодом - это переменная i
обновляется для каждой итерации цикла, поэтому событие click привязывается к последнему значению, которое у i
было.
Чтобы обойти эту проблему, создайте анонимную функцию, которая принимает параметр i
который закрывает закрытие javascript.
console.log()
это вне функции щелчка, это в области видимости - wtf?