Передать пользовательскую переменную в анонимную функцию щелчка jQuery

0

Я хочу передать текущую итерацию цикла foreach на событие click, но он возвращает "undefined" - но почему?

for (var i = 0; i < __ARR_selectors.length; i++) {
    __ARR_selectors[i].click( function(e, i) {
        console.log(i); //returns undefined
}
Теги:

1 ответ

2
Лучший ответ

Попробуй это:

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.

  • 0
    Это так глупо. Если я console.log() это вне функции щелчка, это в области видимости - wtf?
  • 0
    @ Ультра - это не глупо - это дизайн. попробуйте поискать в Google статьи о закрытии javascript - это станет намного понятнее, когда вы это поймете!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню