キャッチされないGoogleマップ情報ウィンドウでイベントをクリックしてください

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

質問

Googleマップv2では、私はGMarkerの情報ウィンドウ内のテキストをクリックして機能を起動できるようにしたいと思います。

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

...

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

は動作しません。なぜこのイベントは情報ウィンドウの内側に捕捉されない?

役に立ちましたか?

解決

それはあなたの例であるようイベントバインディング呼び出しがopenInfoWindowHtmlへの呼び出しの前に呼び出された場合、最初の呼び出しがそう何ハンドラが接続されなかった「foo」というクラスを持つ要素を探していた間、

、スパンはDOMではありませんでしたます。

あなたはそのイベントハンドラを移動することができますいずれかopenInfoWindowHtml後に呼ばれるように、またはjQueryのは、指定されたセレクタを持つ新しい要素のためのDOMを監視するように結合「ライブ」イベントを使用します。

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

他のヒント

私はケビン・ゴルスキのように働いて、それを得るcouldntのを説明...

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

私の知る限りでは、GMapsはプログラム的に情報ウィンドウにコンテンツを注入するので、あなたはイベントの委任を使用しない限り、注入された要素にバインドされたイベントハンドラが発生しません。

$(".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