从onMarkerClick打开不同的模态

时间:2014-05-07 23:14:54

标签: javascript jquery html arrays jvectormap

我的问题是我想根据markerSet数组中的名称加载不同的模态,但是现在if / else每次都返回相同的模态。

请参阅下面的JS中的声明。 name: "Tulsa"标记应该打开#tulsa-modal,其他标记应该打开#band-modal。有什么想法吗?

var markerSet = [
    {latLng: [36.13, -95.93], name: "Tulsa"},
    {latLng: [38.62, -90.19], name: "St. Louis"},
    {latLng: [44.98, -93.26], name: "Minneapolis"}
];

 $(function(){
    $('#usa').vectorMap({
                  map: 'us_aea_en',
                  // the rest cut for brevity..
            },

         markers: markerSet,
               onMarkerClick: function(event, index){
                if($.inArray("Tulsa", markerSet) == -1) {
                  $('#tulsa-modal').modal();
              }
               else {
                $('#band-modal').modal();
            }
          }                
     });
});

1 个答案:

答案 0 :(得分:1)

您正在检查是否" tulsa"存在于markerSet数组中 - 这将始终返回true,因为该值始终存在于数组中,因此第一个模式将始终打开。

您需要为您单击的标记传递某种标识符(例如,您的onMarker点击可能会返回该标记的名称)并检查该值并显示相应的模态。

我不熟悉您正在使用的库,但它可能类似于以下

    var markerSet = [
    {latLng: [36.13, -95.93], name: "Tulsa"},
    {latLng: [38.62, -90.19], name: "St. Louis"},
    {latLng: [44.98, -93.26], name: "Minneapolis"}
];



   $(function(){
        $('#usa').vectorMap({
                      map: 'us_aea_en',
                      // the rest cut for brevity..
                },

             markers: markerSet,
                   onMarkerClick: function(event, index){

//check the name property of the clicked marker object

                    if(markerSet[index].name == "Tulsa") {
                      $('#tulsa-modal').modal();
                  }
                   else {
                    $('#band-modal').modal();
                }
              }                
         });
    });