2012-08-14 82 views
1

在我的应用程序用户创建标记,当他点击地图。所以像这样的代码:谷歌地图API:强制地图不处理单击信息框内

function placeMarker(map, location) { 
    var marker = new google.maps.Marker({ 
     position: location, 
     map: map 
    //other... 
    var infowindow = new google.maps.InfoWindow({ 
     content: ballon.get(0) 
    }); 

    ballon.find("#delete-btn").click(function(){ 
     infowindow.close(); 
     $mapPreview.data("markers")[id].marker.setMap(null); 
     delete $this.data("markers")[id]; 
    }); 
}); 

"#delete-btn"里面infowindow。问题是当用户点击"#delete-btn"时,他还在地图上创建了新的标记。我怎样才能避免这种情况?

回答

1
baloon.find("#delete-btn").click(function(e){ 
    e.stopPropagation(); 

通过对点击功能(e)传递事件变量,然后从通过DOM冒泡,并通过各种其他的听众越来越拿起停止使用e.stopPropagation()

这将阻止事件的事件传播,就像地图上的那些一样。

+0

谢谢,我会尽快接受 – xander27 2012-08-14 04:53:15

+0

这也适用于IE?我曾经做过不同的事情,一个用于真正的浏览器,另一个用于IE,例如:function(ev)\t \t try {ev.stopPropagation()} catch(e){event.cancelBubble = true}; – Marcelo 2012-08-14 07:33:55

+0

@Marcelo - 是的,它会在IE中工作。你实际上得到了一个jQuery事件,而不是浏览器事件,并且jQuery将'e.preventDefault()'/'e.stopPropagation() – ahren 2012-08-14 08:55:27