Как назначить обратные вызовы событий, перебирая массив в javascript (jQuery)

Я генерирую неупорядоченный список с помощью javascript (используя jQuery). Каждый элемент списка должен получить свой собственный прослушиватель событий для события «click». Однако у меня возникли проблемы с установкой правильного обратного вызова, прикрепленного к нужному элементу. (Раздетый) пример кода может немного прояснить ситуацию:

for(class_id in classes) {
    callback = function() { this.selectClass(class_id) };
    li_item = jQuery('<li></li>')
                .click(callback);
}

На самом деле, в этой итерации происходит больше, но я не думаю, что это было очень важно для вопроса. В любом случае происходит то, что функция обратного вызова, по-видимому,referenced скорее, чемstored (& скопировано). Конечный результат? Когда пользователь нажимаетany из элементов списка, он всегда будет выполнять действие дляlast class_id вclasses массив, так как он использует функцию, хранящуюся вcallback в этот конкретный момент.

Я нашел грязные обходные пути (например, разборhref атрибут в закрытомa элемент), но мне было интересно, есть ли способ достичь моих целей в «чистой»? путь. Если мой подход ужасен, скажите, пожалуйста, до тех пор, пока вы говорите мне почему :-) Спасибо!

Ответы на вопрос(6)

Ваш ответ на вопрос