我有一个关于谷歌地图和事件处理/听力的问题。将事件处理程序附加到谷歌地图内的元素信息气泡
使用jQuery和谷歌地图v3,我可以放置地图标记和事件侦听器,当用户单击标记时打开一个infobubble。我想做什么(但到目前为止还没有弄清楚)是为信息泡泡的内容添加另一个事件处理程序。例如,如果用户点击地图标记打开信息泡泡(该部分起作用),然后如果他们点击泡泡内的某些东西做其他事情。我在下面贴上我的代码,在此先感谢您的帮助
function addMarker(data) {
var myLatlng = new google.maps.LatLng(data.Latitude, data.Longitude);
var title = data.title? data.title: "";
var icon = $('#siteUrl').val() + 'img/locate.png';
var bubbleContentString = "<span class=\"bubble-details-button\">Get Details about " + title+ "</span>";
myInfoBubble = new InfoBubble({
content: bubbleContentString,
hideCloseButton: true,
backgroundColor: '#004475',
borderColor: '#004475'
});
var myMarker = new google.maps.Marker({
position: myLatlng,
map: map,
title: title,
icon: icon
});
addListenerToMarker(myMarker, myInfoBubble);
markerSet.push(myMarker, myInfoBubble);
}
function addListenerToMarker(marker, bubble){
console.log($(bubble.getContent()).find('.bubble-details-button')[0]);
google.maps.event.addListener(marker, 'click', function() {
if (!bubble.isOpen()) {
google.maps.event.addListenerOnce(bubble, 'domready', function(){
console.log($(bubble.getContent()).find('.bubble-details-button')[0]);
google.maps.event.addDomListener($(bubble.getContent()).find('.bubble-details-button')[0], 'click', function(){
alert("hi");
});
});
bubble.open(map, marker);
}
});
}
你在说什么是有道理的,但是我试图实施你的建议,我没有成功。 我做了一个复制并粘贴了你的建议,但是泡沫本身并没有打开,所以我甚至无法点击泡泡内的内容 – 2012-04-09 03:15:26
对不起,这不完全正确。我原来的代码中有一个错字。我修正了这个错字,它在我曾打电话给google.maps.event.addListener的位置(标记,'click',function(){ marker should have read,mymarker。 但是,修正了错字结果在我点击地图上的标记时出现错误,错误消息是: Microsoft JScript运行时错误:无法获取属性'addEventListener'的值:对象为null或undefined – 2012-04-09 03:42:03
对不起,对于迟到的回复。检查这个'console.log($(bubble.getContent())。find('。bubble-details-button')[0])'?是否DOM元素? – Engineer 2012-04-09 18:48:51