我正在使用Markercluster plugin Google Maps API V3。我想在用户单击群集图标时访问click事件。我能来的最接近的是
JS代码
google.maps.event.addListener(mc, "clusterclick", function (cluster) {
event.stopPropagation();
});
问题: event.stopPropagation()
只能在Chrome中使用,而不是Firefox或IE。它只有在传递event
对象作为参数添加到函数时才能工作,如下所示:
$("#div").click(function(event) {
event.stopPropagation();
}
但是,我不知道MarkerClusterer创建的集群图标的DOM元素,所以我不能选择它!我该怎么办?
答案 0 :(得分:3)
<击> 见这里:https://developers.google.com/maps/documentation/javascript/events#EventArguments
google.maps.event.addListener(map,'click',function(event){placeMarker(event.latLng);});
事件calback的第一个参数是事件对象。在你的情况下,它将是:
google.maps.event.addListener(mc, "clusterclick", function (cluster) {
cluster.stopPropagation();
});
击> <击> 撞击>
由于这是一个自定义事件,并且程序员没有将事件对象作为参数传递,因此您的解决方案是自己实现它:
来自http://code.google.com/p/google-maps-utility-library-v3/source/browse/trunk/markerclustererplus/src/markerclusterer.js?r=362的第150和151行:
发件人:强>
google.maps.event.trigger(mc, "click", cClusterIcon.cluster_);
google.maps.event.trigger(mc, "clusterclick", cClusterIcon.cluster_); // deprecated name
以强>
google.maps.event.trigger(mc, "click", e, cClusterIcon.cluster_);
google.maps.event.trigger(mc, "clusterclick", e, cClusterIcon.cluster_); // deprecated name
请注意e
作为第3个参数。这是来自原始事件的事件对象,在第139行:
google.maps.event.addDomListener(this.div_, "click", function (e) {
答案 1 :(得分:1)
您可以尝试使用return false;
。虽然这既停止了事件冒泡以及默认行为。因此,我不知道您是否可以在特定情况下使用它。
<强>更新强>
clusterclick
event is deprecated。您应该使用click
事件。
您是否已尝试同时执行.stopPropagtion
和.cancelBubble = true
?