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?

È stato utile?

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');
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top