2013-02-21 1 views
0

У меня есть кусок кода, который интегрирует Bing карты в рамках JQuery Mobile вещи работают хорошо, если не текст, который отображается в пределах каждого маркераJQuery само = это сбросит нажмите

маркеры отображаются в в нужном месте, однако текст, кажется, изменения в одном из последних маркеров, генерируемого

это мой код

for (var i = 0; i < locations.length; i++) 
{ 
    marker_description = locations[i].description; 
     marker_title = locations[i].title; 
    var self = this; 


    self.addMarker({'location': locations[i].lat +','+locations[i].long, 'bounds' : true }) 
    .click(function() { 
     self.openInfoWindow({ 
     'title': marker_title, 
     'description': marker_description 
     }, this); 
    }); 
} 

так что проблема в том, что при нажатии на маркере, всплывающее окно, которое открывается в ДИСПЛЕЙ ying значение последнего элемента цикла.

ответ

2

К моменту вызова вызываемых вами вызовов вызываются переменные.

Вы можете защитить их с помощью немедленно выполненного закрытия, как это:

for (var i = 0; i < locations.length; i++) { 
    (function(i){ 
     var marker_description = locations[i].description; // be careful to use local variables 
     var marker_title = locations[i].title; 
     var self = this; 
     self.addMarker({'location': locations[i].lat +','+locations[i].long, 'bounds' : true }) 
     .click(function() { 
      self.openInfoWindow({ 
      'title': marker_title, 
      'description': marker_description 
      }, this); 
     }); 
    })(i); 
} 

Обратите внимание на var я добавил, чтобы сделать локальной переменной.

Смежные вопросы