2017-07-04 77 views
1

我的传单地图有打开模态的标记。点击传单地图关闭模式,点击标记打开模式

但是,当用户点击地图时,我希望模式关闭。但是代码,使这种情况发生(下)位与标记进行交互,并迫使它,因为它打开后关闭:

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

我没有得到这个工作,看到的jsfiddle这里:https://jsfiddle.net/askebos/Lh1y12uq/

但正如你所看到的,它似乎是工作的唯一原因是因为它创造了以下错误:

Uncaught TypeError: e.preventDefault is not a function.

我想这是因为从执行防止map.on('click'...)功能。

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

回答

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/