单击Leaflet map关闭模式,单击标记打开模态

时间:2017-07-04 10:31:00

标签: leaflet bootstrap-modal preventdefault

我的宣传单地图上有打开模态的标记。

但是,当用户点击地图时,我希望模式关闭。但是,发生这种情况的代码(下面)会与标记交互,并在标记打开时立即关闭它:

map.on('click', function(e) {
$('.modal').modal('hide'); });

我确实让这个工作 - 请看这里的JSFiddle:https://jsfiddle.net/askebos/Lh1y12uq/

但正如您所看到的,它似乎工作的唯一原因是它会产生以下错误:

  

未捕获的TypeError:e.preventDefault不是函数。

我想是因为map.on('click'...)函数无法执行。

有关如何在没有错误的情况下获得相同行为的任何想法?

1 个答案:

答案 0 :(得分:0)

解决方案是添加init()函数,该函数在单击标记时跟踪。灵感来自这个question

首先,将init()函数添加到您的代码中:

function init() {
    init.called = true;
}

然后在单击标记时调用该函数:

function markerOnClick(e) {
  init();
...
}

创建一个在单击地图时触发的函数,但包含一个if / else语句,用于检查init.called是否已设置为true。如果是这种情况,请重置init.called。如果尚未设置为true,则会在其他位置单击地图,并且任何模式都可能会关闭。

function mapClick () {
if(init.called) {
    init.called = false;
}
else{
  $('.modal').modal('hide');
}
}

最后,绑定mapClick函数以映射点击次数。

map.on('click', mapClick);

该功能将不再覆盖标记点击,并且错误也已解决。这仍然没有告诉我e.preventDefault导致错误的原因,所以任何解释都会受到欢迎!

可以在此处找到工作的JSFiddle:https://jsfiddle.net/askebos/oesh59jr/