Frage

Mit Google Map v2, ich möchte in der Lage sein, eine Funktion auszulösen, wenn ein Text in dem Infofenster eines GMarker klicken.

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

...

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

funktioniert nicht. Warum wird das Ereignis nicht in der Infowindow gefangen?

War es hilfreich?

Lösung

Wenn die Ereignisbindung Anruf vor dem Aufruf von openInfoWindowHtml genannt wird, wie es in Ihrem Beispiel ist, war die Spanne nicht im DOM während der erste Anruf für Elemente mit der Klasse der Suche wurde „foo“, so wurde kein Handler angebracht .

Sie können entweder die Event-Handler bewegen, um nach openInfoWindowHtml aufgerufen werden, oder „live“ Ereignis-Bindung verwenden, so dass jQuery das DOM für alle neue Elemente mit dem angegebenen Selektor überwachen.

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

Andere Tipps

Ich konnte nicht es bekommen arbeiten wie Kevin Gorski erklärt ...

mit jQuery 1.9.1 und Karten api v = 3.exp folgenden Arbeiten:

infowindow.setContent('<a href="#" id="test">test</a>');
google.maps.event.addDomListener(infowindow, 'domready', function() {
    $('#test').click(function() {
        alert("Hello World");
    });
});

Soweit ich weiß, spritzt GMaps Inhalt in das Infofenster programmatisch, so dass alle gebundenen Event-Handler auf den injizierten Elemente wird nicht ausgelöst, wenn Sie Ereignis Delegation verwenden:

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

Siehe live Ereignishandler.

Versuchen Sie folgendes:

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

einfache Lösung und die Arbeit für mich. verwenden Onclick-Ereignis in Spanne.

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

function test(){
alert('test OK');
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top