Событие клика в Google Map InfoWindow не обнаружено - PullRequest
9 голосов
/ 07 февраля 2010

В Google Map v2 я хотел бы иметь возможность вызывать функцию при нажатии на текст в информационном окне GMarker.

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

...

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

не работает.Почему событие не перехватывается в InfoWindow?

Ответы [ 5 ]

10 голосов
/ 16 мая 2013

Я не мог заставить его работать, как объяснил Кевин Горски ...

с jquery 1.9.1 и картами api v = 3.exp следующие работы:

infowindow.setContent('<a href="#" id="test">test</a>');
google.maps.event.addDomListener(infowindow, 'domready', function() {
    $('#test').click(function() {
        alert("Hello World");
    });
});
9 голосов
/ 07 февраля 2010

Если вызов привязки события вызывается перед вызовом openInfoWindowHtml, как в вашем примере, диапазон не был в DOM, пока первый вызов искал элементы с классом "foo", поэтому обработчик не был присоединен .

Вы можете либо переместить этот обработчик события для вызова после openInfoWindowHtml, либо использовать «живое» связывание событий, чтобы jQuery отслеживал DOM для любых новых элементов с данным селектором.

$(".foo").live('click', myFunction);
3 голосов
/ 07 февраля 2010

Насколько я знаю, GMaps внедряет контент в InfoWindow программным способом, поэтому любые обработчики связанных событий на внедренных элементах не сработают, если вы не используете делегирование события:

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

См. Обработчики событий live.

0 голосов
/ 09 июля 2014

простое решение и работа для меня. использовать событие onclick в span.

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

function test(){
alert('test OK');
}
0 голосов
/ 15 апреля 2013

Попробуйте это:

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);
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...