2010-02-07 111 views
9

使用Google Map v2時,我希望能夠在單擊GMarker的InfoWindow中的文本時觸發一個函數。谷歌地圖InfoWindow中的點擊事件未捕獲

$(".foo").click(myFunction); 

... 

marker.openInfoWindowHtml("<span class=\"foo\">myText</span>"); 

不起作用。爲什麼事件沒有被捕獲到InfoWindow中?

回答

9

如果在調用openInfoWindowHtml之前調用了事件綁定調用,就像在您的示例中一樣,該跨度不在DOM中,而第一個調用正在查找類爲「foo」的元素,因此沒有處理程序是連接。

您可以移動該事件處理程序以在openInfoWindowHtml之後調用,也可以使用「活動」事件綁定,以便jQuery將使用給定的選擇器監視DOM的任何新元素。

$(".foo").live('click', myFunction); 
+0

感謝凱文,這工作。我需要在jquery mobile內部#link上添加一個點擊事件,內部頁面似乎在事件觸發前加載?只是要注意的事情。 – 2011-06-03 23:43:02

3

據我所知,GMaps注入內容納入信息窗口編程,所以除非你使用事件代表團注入的元素任何綁定的事件處理程序將不會觸發:

$(".foo").live("click", myFunction); 

live事件處理程序。

0

試試這個:

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); 
    }); 
}); 
10

我不能得到它像凱文·戈斯基工作說明......

與jQuery 1.9.1和地圖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"); 
    }); 
}); 
0

簡單的解決方案,爲我工作。在跨度中使用onclick事件。

<span class=\"foo\" onclick="test()">myText</span> 

function test(){ 
alert('test OK'); 
}