Question

Avec Google Map v2, je voudrais être en mesure de déclencher une fonction en cliquant sur un texte dans la bulle d'un GMarker.

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

...

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

ne fonctionne pas. Pourquoi l'événement n'est pas pris à l'intérieur du InfoWindow?

Était-ce utile?

La solution

Si l'appel de liaison d'événements est appelé avant l'appel à openInfoWindowHtml comme dans votre exemple, la durée n'a pas été dans les DOM pendant que le premier était à la recherche des éléments avec la classe « foo », donc pas de gestionnaire était attaché .

Vous pouvez déplacer ce gestionnaire d'événement à être appelé après openInfoWindowHtml, ou événement « live » de sorte que la liaison jQuery surveillera les DOM pour tous les nouveaux éléments avec le sélecteur donné.

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

Autres conseils

Je ne pouvais pas le faire fonctionner comme Kevin Gorski a expliqué ...

avec jquery 1.9.1 et cartes api v = 3.exp les travaux suivants:

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

Pour autant que je sache, GMaps injecte du contenu dans le InfoWindow programatically, de sorte que les gestionnaires d'événements liés sur les éléments injectés ne se déclenche pas à moins que vous utilisez la délégation de l'événement:

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

Voir la live des gestionnaires d'événements.

Essayez ceci:

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

solution simple et le travail pour moi. utiliser événement onclick dans la travée.

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

function test(){
alert('test OK');
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top