Clique evento no Google Map InfoWindow não pegou
-
19-09-2019 - |
Pergunta
Com o Google Map v2, eu gostaria de ser capaz de desencadear uma função ao clicar em um texto no InfoWindow de um GMarker.
$(".foo").click(myFunction);
...
marker.openInfoWindowHtml("<span class=\"foo\">myText</span>");
não funciona. Por que o evento não está preso dentro do InfoWindow?
Solução
Se a chamada de ligação evento é chamado antes da chamada para openInfoWindowHtml como é no seu exemplo, o tempo não estava no DOM enquanto a primeira chamada foi à procura de elementos com a classe "foo", de forma que nenhum manipulador foi anexado .
Você pode mover esse manipulador de eventos a ser chamado após openInfoWindowHtml ou obrigatório o uso de eventos "ao vivo" para que jQuery irá monitorar o DOM para quaisquer novos elementos com o selector dada.
$(".foo").live('click', myFunction);
Outras dicas
Eu não poderia fazê-lo funcionar como Kevin Gorski explicou ...
com jQuery 1.9.1 e Maps API v = 3.exp as seguintes obras:
infowindow.setContent('<a href="#" id="test">test</a>');
google.maps.event.addDomListener(infowindow, 'domready', function() {
$('#test').click(function() {
alert("Hello World");
});
});
Tanto quanto eu sei, o conteúdo GMaps injeta na InfoWindow programaticamente, por isso, quaisquer manipuladores de eventos encadernados sobre os elementos injetados não fogo a menos que você usar a delegação de evento:
$(".foo").live("click", myFunction);
Veja a live
manipuladores de eventos.
Tente isto:
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);
});
});
solução simples e trabalho para mim. usar onclick evento em span.
<span class=\"foo\" onclick="test()">myText</span>
function test(){
alert('test OK');
}