谷歌地图infowindow关闭点击事件(函数参数)

3
我的Web应用程序使用以下弹出层插件,在屏幕上显示弹出框以展示个人资料内容:
http://vast-eng.github.io/jquery-popup-overlay/ 我的问题与我在弹出窗口中使用的Google地图标记信息窗口有关。
当我试图关闭信息窗口时,弹出窗口也会消失。
这是错误的!我不知道为什么它会这样做。
如果我找不到解决方案,我可以禁用或隐藏X,但我不想这样做。
以下链接中的“where”部分显示了您的问题:
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/


我认为未定义是正确的。你期望在那里看到什么?试着创建一个带有弹出窗口、地图和信息窗口的jsfiddle,然后我们或许能够更进一步的帮助你。 - MrUpsidown
这里有一个演示问题的 Fiddle:http://jsfiddle.net/462HF/ - html_programmer
哇,这很奇怪。还不能弄清楚为什么会发生这种情况... - MrUpsidown
很讨厌的问题。顺便说一下,我注意到我在fiddle中将“map”作为参数传递给了initialize函数。显然这是一个错误。我很快就制作了这个fiddle,但问题仍然存在。我正在构建的应用程序基于backbone.js。 - html_programmer
你可能想为此创建一个赏金任务。我已经尝试了一些方法,但是到目前为止还没有成功解决这个问题。 - MrUpsidown
显示剩余7条评论
1个回答

1

弹出层插件中的模糊功能在单击谷歌地图上信息窗口中的“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,而不是popup div。因此,它将调用methods.hide(el)并关闭弹出窗口。

可能有更好的方法来确定是否单击了它,但将其更改为以下内容即可。它只检查目标图像的源:

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);
                }
            };
        }

谢谢你的帮助!我按照你的指导,对标签设置了一个条件。没有任何img应该触发隐藏,而且我不确定img源是否永远相同。if(!($(e.target).prop("tagName") === 'IMG')) 你解决了我的问题,所以非常感谢! - html_programmer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接