Есть массив объектов, для каждого объекта нужно назначить обработчик события наведения мышки, клика по объекту, движения мыши и т.д.
Вот код:
for (var i = 0; i < Obj.Sectors.length; i++) {
Obj.Sectors[i].mousemove(function (event) {
Obj.Popup(event.clientX, event.clientY, i);
});
}
Проблема в том, что при срабатывание события в функцию Popup всегда передается одинаковый счетчик цикла i, равный Obj.Sectors.length+1. Как это можно обойти?
Предложенный способ совсем не оптимальный. Лучше как-то привяжите данные непосредственно к объекту, а в обработчике их доставайте. Иначе для каждого обработчика у вас получается своя копия функции со своим замыканием.
>Иначе для каждого обработчика у вас получается своя копия функции со своим замыканием
Копия? Разве не ссылка на вызов одной и той же функции с параметрами и окружениями из 1 переменной?