Как обнаружить нажатие кнопки в информационном окне googlemaps

Использование Googlemaps V3

Я пытаюсь добавить кнопку в информационное окно на моей карте Google. Информационные окна и кнопки отображаются, как и ожидалось. Я пытаюсь зафиксировать событие нажатия кнопки. Это то, что я до сих пор:

var contentBtn = '<p><button id="marker'+numby+'" class="iwLink" href="#" >Done</button></p>';
        google.maps.event.addListener(marker, 'click', function() {
            infowindow.setContent(address+contentBtn);
            infowindow.open(map, this);
        });

        google.maps.event.addDomListener(contentBtn, 'click', function() {

          alert($(this).attr('id'));
        });

Информационное окно появляется как и ожидалось вместе с кнопкой. Тем не менее, я также получаю следующую ошибку в журнале консоли:

Uncaught TypeError: Невозможно прочитать свойство 'click' из неопределенного
Кажется, это вызвано линией google.maps.event.addDomListener(contentBtn, 'click', function()

1 ответ

Решение

Кнопка не добавляется в DOM, пока информационное окно не завершит рендеринг. Вы не можете найти его с помощью getElementById (или его эквивалента в jquery), пока не сработает событие domready из информационного окна.

var contentBtn = '<p><button id="marker'+numby+'" class="iwLink" href="#" >Done</button></p>';
    google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(address+contentBtn);
        infowindow.open(map, this);
    });
    google.maps.event.addListener(infowindow, 'domready', function() {
      google.maps.event.addDomListener(contentBtn, 'click', function() {

        alert($(this).attr('id'));
      });
    });
Другие вопросы по тегам