Как назначить обратные вызовы событий, перебирая массив в 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
элемент), но мне было интересно, есть ли способ достичь моих целей в «чистой»? путь. Если мой подход ужасен, скажите, пожалуйста, до тех пор, пока вы говорите мне почему :-) Спасибо!