Событие щелчка в информационном окне Google Map не зафиксировано

StackOverflow https://stackoverflow.com/questions/2217267

Вопрос

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

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

...

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

с jquery 1.9.1 и maps 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");
    });
});

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

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

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

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

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

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

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

function test(){
alert('test OK');
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top