我正在使用谷歌地图API v.3。我正在infowindow上添加一个图像,并希望处理该图像的点击事件。但是点击事件会触发两次。这是我的代码 -
var mapOptions = {center: new google.maps.LatLng(lat,lng), zoom: 15, mapTypeId: google.maps.MapTypeId.ROADMAP};
var infoWindow = new google.maps.InfoWindow();
var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
var myLatlng = new google.maps.LatLng(lat,lng);
var data = {}; data.title = 'title'; data.lat = lat;data.lng = lng;
data.description = '<img class="test-image" src="src"';
var marker = new google.maps.Marker({position: myLatlng, map: map,title: 'title'});
(function (marker, data) {
google.maps.event.addListener(marker, "click", function (e) {
infoWindow.setContent(data.description);
infoWindow.open(map, marker);
});
google.maps.event.addDomListener(infoWindow, 'domready', function () {
$('.test-image').click(function () {
alert("Hello World");
});
});
})(marker, data);
我怎样摆脱这个问题?
在期待中感谢你。
答案 0 :(得分:1)
我无法告诉您这种行为的原因,但是当您使用addListenerOnce
并在domready
中应用click
- 侦听器时,它可能会被修复 - 标记的回调:
(function (marker, data) {
google.maps.event.addListener(marker, "click", function (e) {
google.maps.event.addListenerOnce(infoWindow, 'domready', function () {
$('.test-image').click(function () {
alert("Hello World");
});
});
infoWindow.setContent(data.description);
infoWindow.open(map,marker);
});
})(marker, data);
答案 1 :(得分:0)
google.maps.event.addListener(marker, "click", function() {
infoWindow.setContent(data.description);
infoWindow.open(map, marker);
$('.test-image').click(function() {
alert("Hello World");
});
});
这适合我。