2014-01-14 57 views
3

我的Web應用程序使用以下彈出疊加插件顯示在彈出的個人資料的內容在屏幕上:
http://vast-eng.github.io/jquery-popup-overlay/谷歌地圖信息窗口closeclick事件(函數參數)

我的問題是有關谷歌的地圖 - 標記infowindow,我在彈出窗口中使用。
當我嘗試關閉infowindow時,彈出消失。
這是錯誤的!我不會立即明白爲什麼這樣做。
如果我找不到解決方案,我可以禁用或隱藏X,但我不想這樣做。

「在哪裏」,在下面的鏈接部分顯示您的問題:
http://www.zwoop.be/dev/#list/bars/1

編輯 事件參數返回以下事件偵聽器「未定義」:

google.maps.event.addListener(self.marker.infowindow, "closeclick", function(e) 
    { 
     console.log(e); 
    }); 

謝謝

enter image description here

EDIT2 這裏是一個快速小提琴說明該問題:
http://jsfiddle.net/462HF/

+0

我相信未定義是正確的。你會在那裏期待什麼?嘗試用彈出窗口,地圖和infowindow創建一個jsfiddle,然後我們可以進一步提供幫助。 – MrUpsidown

+0

我曾希望通過stopPropagation防止事件冒泡到父元素。 – Trace

+0

這是一個演示問題的小提琴:http://jsfiddle.net/462HF/ – Trace

回答

1

當你點擊「X」在信息窗口的谷歌地圖上,在彈出的覆蓋插件模糊函數獲取調用,這就是整個彈出窗口關閉的原因。下面是在jquery.popupoverlay.js文件中的代碼:

if (options.blur) { 
      blurhandler = function (e) { 
       if (!$(e.target).parents().andSelf().is('#' + el.id)) { 
        methods.hide(el); 
       } 
      }; 
     } 

的「X」是一個形象,其parents()只回信息窗口格,但不能彈出股利。因此,它會調用methods.hide(el)並關閉彈出窗口。

可能有更好的方式來確定它是否被點擊,但將其更改爲以下作品。它只是檢查目標的img源:

if (options.blur) { 
      blurhandler = function (e) { 
       if (!$(e.target).parents().andSelf().is('#' + el.id)) { 
        if(!($(e.target).attr('src') === 'http://maps.gstatic.com/mapfiles/api-3/images/mapcnt3.png')) 
         methods.hide(el); 
       } 
      }; 
     } 
+0

感謝您的幫助!我遵循了你的指導原則,並在標籤上添加了一個條件。沒有img應該觸發隱藏,我不確定img源是否永遠是一樣的。 'if(!($(e.target).prop(「tagName」)==='IMG'))'你確實解決了我的問題,所以非常感謝! – Trace