防止点击事件在谷歌地图上传播/冒泡



我正在使用Google Maps API V3的MarkerClusterer库将附近的标记分组为一个标记。当用户单击集群标记时,该集群标记旁边会显示一个div。现在,我想让它在点击集群标记后,关闭弹出的div,他可以点击地图。

问题:在地图上添加google.maps.event.addListener(map, 'click', function(){})后,当用户单击集群标记打开弹出的div时,什么都没有发生!!我猜集群标记上的点击事件导致div弹出,但点击事件也传播到地图,触发地图的点击监听器关闭弹出。

我希望我可以使用jQuery的event.stopPropagation(),但在哪里可以获得event对象?

我该如何解决这个问题?如何防止单击通过群集标记传播到地图?希望该解决方案是跨浏览器兼容的。

JS代码

clusterclickListener = google.maps.event.addListener(mc, "clusterclick", function (cluster) {
    $('#content_container').show();
});
google.maps.event.addListener(map, 'click', function() {
    $('#content_container').hide(); 
});

嗯。我刚刚测试了这个,一切都对我有效。我唯一的建议是检查你的div是否有正确的html/css/定位,因为它可能只是被地图覆盖了。

默认情况下,在处理程序函数中可以访问事件对象。如果你想访问事件对象,你可以简单地使用"event"来访问它,所以event.stopPropagation()应该可以工作。请记住,如果您将"event"作为参数传递给处理程序函数,您将获得一个没有stopPropagation方法的自定义谷歌地图点击事件。

最新更新