2010-02-07 13 views
9

Con Google Map v2, me gustaría poder activar una función al hacer clic en un texto en la ventana de información de un GMarker.Haga clic en evento en Google Map InfoWindow no capturado

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

... 

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

no funciona. ¿Por qué el evento no está atrapado dentro de InfoWindow?

Respuesta

9

Si se llama a la invocación de evento antes de llamar a openInfoWindowHtml como en su ejemplo, el lapso no estaba en el DOM mientras la primera llamada buscaba elementos con la clase "foo", por lo que no se utilizó ningún controlador adjunto.

Puede mover ese controlador de eventos para llamar después de openInfoWindowHtml, o usar el enlace de eventos "en vivo" para que jQuery monitoree el DOM para cualquier elemento nuevo con el selector dado.

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

Gracias Kevin, eso funciona. Necesitaba poner un evento de clic en un #link interno de jquery mobile y la página interna parece cargarse antes de que se desate el evento ?? algo de lo que tener cuidado –

3

Por lo que yo sé, GMaps inyecta contenido en el InfoWindow mediante programación, por lo que cualquier controlador de eventos consolidados sobre los elementos inyectados no va a disparar a menos que utilice delegación de eventos:

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

Ver las live controladores de eventos.

0

Prueba esto:

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

no pude conseguir que funcione como Kevin Gorski explicó ...

con jQuery 1.9.1 y mapas API v = 3.exp las siguientes obras:

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

solución simple y trabajo para mí. utiliza el evento onclick en span.

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

function test(){ 
alert('test OK'); 
} 
Cuestiones relacionadas