我的网络应用程序使用以下弹出叠加插件在屏幕上的弹出窗口中显示个人资料内容:
http://vast-eng.github.io/jquery-popup-overlay/
我的问题与我在弹出窗口中使用的Google地图标记信息窗有关
当我试图关闭infowindow时,弹出窗口也会消失
这是错的!我不明白为什么会这样做。
如果我找不到解决方案,我可以禁用或隐藏X,但我不想这样做。
以下链接中的“where”部分显示问题:
http://www.zwoop.be/dev/#list/bars/1
修改 事件参数为以下事件侦听器返回“undefined”:
google.maps.event.addListener(self.marker.infowindow, "closeclick", function(e)
{
console.log(e);
});
谢谢
EDIT2
这是一个快速的小提琴,说明了问题:
http://jsfiddle.net/462HF/
答案 0 :(得分:1)
当你点击谷歌地图上的infoWindow中的'X'时,弹出叠加插件中的模糊功能会被调用,这就是整个弹出窗口关闭的原因。下面是jquery.popupoverlay.js文件中的代码:
if (options.blur) {
blurhandler = function (e) {
if (!$(e.target).parents().andSelf().is('#' + el.id)) {
methods.hide(el);
}
};
}
'X'是一个图像,其parents()
只返回InfoWindow div,而不是弹出div。因此,它会调用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);
}
};
}