使用Google Map v2,我想要在单击GMarker的InfoWindow中的文本时触发一个函数。
$(".foo").click(myFunction);
...
marker.openInfoWindowHtml("<span class=\"foo\">myText</span>");
为什么事件在 InfoWindow 内部没有被捕获?
使用Google Map v2,我想要在单击GMarker的InfoWindow中的文本时触发一个函数。
$(".foo").click(myFunction);
...
marker.openInfoWindowHtml("<span class=\"foo\">myText</span>");
为什么事件在 InfoWindow 内部没有被捕获?
我无法像Kevin Gorski解释的那样使它工作...
在jquery 1.9.1和maps api v=3.exp上,以下代码可以正常工作:
infowindow.setContent('<a href="#" id="test">test</a>');
google.maps.event.addDomListener(infowindow, 'domready', function() {
$('#test').click(function() {
alert("Hello World");
});
});
$(".foo").live('click', myFunction);
$(".foo").live("click", myFunction);
查看live
事件处理程序。
最简单且完整的解决方案。
infoWindow 本身应该只包含一个带有唯一 id 的占位符 div:
<InfoWindow
marker={this.state.activeMarker}
visible={this.state.showingInfoWindow}
onOpen={e => {
this.onInfoWindowOpen(this.props, e);
}}
>
<div id="xyz" />
</InfoWindow>
在 Mapcontainer 内部,您定义了一个 onInfoWindowOpen 回调函数,它插入一个带有 onClick 事件的单个组件/容器,并将其呈现到占位符 div 中:
onInfoWindowOpen = () => {
const button = (<button
onClick={
() => {
this.viewClinic(this.state.selectedPlace.slug)
}
}>
View Details
</button>);
ReactDOM.render(React.Children.only(button),document.getElementById("xyz"));
}
这里是一个可运行的示例:
另一个完整的示例 MAP、Marker 和 InfoWindow:
如果您有任何问题,请在评论区留言。
试试这个:
google.maps.event.addListener(infowindow,"**domready**",function() {
var Cancel = document.getElementById("Cancel");
var Ok = document.getElementById("Ok");
google.maps.event.addDomListener(Cancel,"click",function() {
infowindow.close();
});
google.maps.event.addDomListener(Ok,"click",function() {
infowindow.close();
console.log(position);
codeLatLng(position);
});
});
简单的解决方案,适用于我。在span中使用onclick事件。
<span class=\"foo\" onclick="test()">myText</span>
function test(){
alert('test OK');
}