Показать сообщение отдельно
  #1 (permalink)  
Старый 28.07.2010, 15:48
Аватар для mycoding
NodeJS developer - ушел
Отправить личное сообщение для mycoding Посмотреть профиль Найти все сообщения от mycoding
 
Регистрация: 06.01.2010
Сообщений: 1,022

Замыкания чуть чуть не стандартный вариант
Подскажите, пожалуйста.
Первый раз столкнулся с необходимостью использовать замыкания.

Делаю на SVG карту. И необходимо для большого количества городов выполнить следующее.
for(var i=0;i<city.length;i++){
			city[i].svg = R.circle(city[i].x,city[i].y,3).attr({fill: "270-#f2c01f-#fe9400",stroke:"270-#f2c01f-#fe9400"});
			city[i].svg.mouseover(function(e,i){
				city[i].svg.animate({r:10},1000);
				city[i].svgText.show();
			});
			city[i].svg.mouseout(function(e){
				city[i].svg.animate({r:3},1000);
				city[i].svgText.hide();
			});
			city[i].svgText = R.text(int(city[i].x)+20, int(city[i].y)-20, city[0].name).attr(attr_font).hide();
		}

В
city[i].svg.mouseover(function(e,i){
    city[i].svg.animate({r:10},1000);
    city[i].svgText.show();
});

У
city[i].svg.animate({r:10},1000);
    city[i].svgText.show();

У i значение максимума при прохождении цикла.
Пробовал как с статье написано про замыкания сделать, но
там случай когда
divs[i].onclick = function(x) {
            return function() { alert(x) }
        }(i);

А здесь функция передается как аргумент.
Уже столькими способами пробовал.
Ни думал, что когда-нибудь столкнусь с необходимостью использовать замыкания.
Ответить с цитированием