문제

Google Map V2를 사용하면 Gmarker의 Infowindow에서 텍스트를 클릭 할 때 기능을 트리거 할 수 있습니다.

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

...

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

작동하지 않습니다. 왜 이벤트가 Infowindow 안에 붙잡혀지지 않습니까?

도움이 되었습니까?

해결책

예제와 같이 OpenInfowIndowhtml로 호출되기 전에 이벤트 바인딩 호출이 호출되면, 첫 번째 호출은 클래스 "foo"가있는 요소를 찾고있는 동안 DOM이 아니 었으므로 핸들러가 첨부되지 않았습니다.

OpenInFowIndowHTML 이후에 호출되도록 해당 이벤트 핸들러를 이동하거나 "라이브"이벤트 바인딩을 사용하여 jQuery가 주어진 선택기와 함께 새로운 요소에 대해 DOM을 모니터링 할 수 있습니다.

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

다른 팁

Kevin Gorski가 설명한 것처럼 작동 할 수 없었습니다 ...

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 class=\"foo\" onclick="test()">myText</span>

function test(){
alert('test OK');
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top