Я генерирую неупорядоченный список через javascript (используя jQuery). Каждый элемент списка должен получить свой собственный прослушиватель событий для события click. Однако у меня проблемы с получением правильного обратного вызова, прикрепленного к нужному предмету. (Раздетый) пример кода может немного прояснить ситуацию:
for(class_id in classes) {
callback = function() { this.selectClass(class_id) };
li_item = jQuery('<li></li>')
.click(callback);
}
На самом деле, в этой итерации происходит больше, но я не думаю, что это было очень важно для вопроса. В любом случае происходит то, что функция обратного вызова, похоже, ссылается , а не хранится (и копируется). Конечный результат? Когда пользователь нажимает любой элементов списка, он всегда будет выполнять действие для last class_id
в массиве classes
, поскольку он использует функцию, сохраненную в callback
в этот конкретный момент.
Я нашел грязные обходные пути (например, анализ атрибута href
во вложенном элементе a
), но мне было интересно, есть ли способ достичь моих целей «чистым» способом. Если мой подход ужасен, скажите, пожалуйста, если вы скажете мне почему :-) Спасибо!