Clicca evento in Google Map non infowindow catturato
-
19-09-2019 - |
Domanda
Con Google Map v2, vorrei essere in grado di attivare una funzione facendo clic su un testo nel InfoWindow di un GMarker.
$(".foo").click(myFunction);
...
marker.openInfoWindowHtml("<span class=\"foo\">myText</span>");
non funziona. Perché l'evento non è rimasto intrappolato nel InfoWindow?
Soluzione
Se la chiamata vincolante evento è chiamato prima della chiamata a openInfoWindowHtml come è nel tuo esempio, la durata non era nel DOM, mentre la prima chiamata era alla ricerca di elementi con la classe "foo", in modo che nessun gestore è stato attaccato .
È possibile spostare che gestore di eventi di essere chiamato dopo openInfoWindowHtml, o utilizzare eventi "live" vincolante in modo che jQuery controllerà il DOM per eventuali nuovi elementi con la data di selezione.
$(".foo").live('click', myFunction);
Altri suggerimenti
non potevo farlo funzionare come Kevin Gorski spiegato ...
con jQuery 1.9.1 e Maps API v = 3.exp le seguenti opere:
infowindow.setContent('<a href="#" id="test">test</a>');
google.maps.event.addDomListener(infowindow, 'domready', function() {
$('#test').click(function() {
alert("Hello World");
});
});
Per quanto ne so, GMaps inietta contenuti nella InfoWindow programatically, quindi eventuali gestori di eventi legati sugli elementi iniettati non viene attivato se non si utilizza la delega evento:
$(".foo").live("click", myFunction);
Vedere la live
gestori di eventi.
Prova questo:
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);
});
});
soluzione semplice a lavorare per me. utilizzare evento onclick a campata.
<span class=\"foo\" onclick="test()">myText</span>
function test(){
alert('test OK');
}