Как обнаружить нажатие кнопки в информационном окне 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'));
});
});