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?

Foi útil?

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');
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top