2017-07-04 52 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/

相關問題