Cliquez sur l'événement dans Google Map InfoWindow pas pris
-
19-09-2019 - |
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?
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');
}