2014-09-10 85 views
0

基本上,我在我的Leaflet地图上有几个标记。我正在使用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!"); 
    } 
}); 

我该怎么做?我知道我的地图ID,但无法弄清楚ID Leaflet分配给它的标记,弹出窗口和其他元素。

回答

0

传单不会为每个标记/弹出窗口添加不同的ID。它只是为每个元素添加适当的类。所以这些元素不应该用jQuery选择器来访问。

如果您想使用具有相同url的ajax设置弹出窗口内容(请在此处进行操作),为什么不只是将所有标记添加到列表中,然后遍历它,然后为每个标记设置事件处理函数该清单。类似这样的:

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!"); 
     } 
    }); 
}); 
} 
相关问题