防止点击事件传播/冒泡到Google地图上

时间:2012-04-04 03:29:41

标签: javascript jquery google-maps javascript-events

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

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

我希望我可以使用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(); 
});

1 个答案:

答案 0 :(得分:4)

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

默认情况下,处理函数中可以访问事件对象。如果要访问事件对象,只需使用“event”访问它,因此event.stopPropagation()应该可以工作。请记住,如果您将“event”作为参数传递给处理函数,您将获得一个没有stopPropagation方法的自定义Google地图点击事件。