我的宣传单地图上有打开模态的标记。
但是,当用户点击地图时,我希望模式关闭。但是,发生这种情况的代码(下面)会与标记交互,并在标记打开时立即关闭它:
map.on('click', function(e) {
$('.modal').modal('hide'); });
我确实让这个工作 - 请看这里的JSFiddle:https://jsfiddle.net/askebos/Lh1y12uq/
但正如您所看到的,它似乎工作的唯一原因是它会产生以下错误:
未捕获的TypeError:e.preventDefault不是函数。
我想是因为map.on('click'...)
函数无法执行。
有关如何在没有错误的情况下获得相同行为的任何想法?
答案 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/