【发布时间】:2018-03-29 18:40:13
【问题描述】:
我正在尝试在动态添加到谷歌地图信息窗口的按钮上添加事件侦听器。
var contentString = '<br></br>' +
'<button type="button" class="btn btn-success" id="btnDirection">Get direction</button> </div>' +
'<button type="button" class="btn btn-success" id="btnDiscount">Related discount</button> </div>';
var marker = new google.maps.Marker({
map: map,
animation: google.maps.Animation.DROP,
position: place.geometry.location,
icon: './Google_Maps_Markers/darkgreen_MarkerK.png'
});
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(contentString);
infoWindow.open(map, this);
var btn = $(contentString).filter('#btnDirection');
if(btn != null){
for(var i=0; i<btn.length; i++){
btn[i].addEventListener('click', function()
{ console.log("hello") });
};
};
});
按钮显示在每个信息窗口上,但是当我点击时什么都没有。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
本文档 (developers.google.com/maps/documentation/javascript/examples/…) 表明您应该使用
addDomListener,而不是addListener -
您正在创建一个新对象
$(contentString)。试试$(infoWindow.getContent()).find("#btnDirection").addEventListener(....)或者更好的$("body").on("click", "#btnDirection", function(){....}) -
我对 event.addListener 没有任何问题。当我单击信息窗口上显示的按钮时,不起作用的是。
-
我试过了。我现在知道 addEventListener 不是一个函数。
-
第二个有效,但是当我单击其中一个按钮时,它正在对所有按钮执行操作,因为我正在向 infowindows 添加具有相同 ID 的按钮。你知道我该如何解决这个问题吗?
标签: javascript google-maps event-listener