2014-09-10 2 views
0

В принципе, у меня есть несколько маркеров на моей карте Листов. Я использую jQuery. На данный момент, если я хочу, чтобы заполнить всплывающие маркера с AJAX, я должен использовать этот код:Листовка: как повлиять на все маркеры на карте?

var marker = L.marker([51.5, -0.09]).addTo(map); 
var marker2 = L.marker([51.49, -0.09]).addTo(map); 

marker.on("click", function() 
{ 
    $.ajax({ 
     type: "GET", 
     url: "Home/transactionForm", 
     dataType: "html", 
     success: function(ajaxresult) 
     { 
      marker.setPopupContent(ajaxresult); 
     }, 
     error: function (ajaxresult) { 
      alert("Filling the popup failed!"); 
     } 
    }); 
}); 

marker2.on("click", function() 
{ 
    $.ajax({ 
     type: "GET", 
     url: "Home/transactionForm", 
     dataType: "html", 
     success: function(ajaxresult) 
     { 
      marker2.setPopupContent(ajaxresult); 
     }, 
     error: function (ajaxresult) { 
      alert("Filling the popup failed!"); 
     } 
    }); 
}); 

Очевидно, что это далеко от идеала. В jQuery это было бы просто:

$("#map").on("click", "#marker", function() { 
    $.ajax({ 
    type: "GET", 
    url: "Home/transactionForm", 
    dataType: "html", 
    success: function(ajaxresult) 
    { 
     $(this).setPopupContent(ajaxresult); 
    }, 
    error: function (ajaxresult) { 
     alert("Filling the popup failed!"); 
    } 
}); 

Как это сделать? Я знаю идентификатор моей карты, но не могу понять, какие идентификационные листы присваиваются маркерам, всплывающим окнам и другим элементам.

ответ

0

В листе не добавляются разные идентификаторы для каждого маркера/всплывающих окон. Он просто добавляет соответствующий класс к каждому элементу. Таким образом, эти элементы не предназначены для доступа с помощью селекторов jQuery.

Если вы хотите установить всплывающее содержимое с помощью ajax с тем же URL-адресом (как вы здесь делаете), почему бы просто не добавить все маркеры в список, перебрать его и затем установить обработчик события для каждого маркера в этот список. Что-то вроде этого:

var markersArray = []; 
markersArray.push(marker1); 
markersArray.push(marker2); 
for (var marker in markersArray) { 
marker.on("click", function() { 
    $.ajax({ 
     type: "GET", 
     url: "Home/transactionForm", 
     dataType: "html", 
     success: function(ajaxresult) 
     { 
      marker.setPopupContent(ajaxresult); 
     }, 
     error: function (ajaxresult) { 
      alert("Filling the popup failed!"); 
     } 
    }); 
}); 
} 
Смежные вопросы