0

Map Data リンクがいつクリックされたかを知る必要があります (画像 1、右下隅を参照)。[マップ データ] ウィンドウを開くと、オーバーレイ要素によって非表示になります (画像 2)。そのため、ウィンドウを開くトリガーを受け取ったときに非表示にし、閉じたときに再表示する必要があります。

以下のように、マップ キャンバスの下のすべてのクリック イベントをキャッチしようとしましたが、[マップ データ] をクリックしてもトリガーされません。

$("googleMapCanvas a").click(function() {
        alert("link under map clicked");
        });

何か案は?

画像1

画像1

画像2

画像2

アップデート

クリスチャンの答えの後の私の機能コードは次のとおりです

<div id="googleMapCanvas">
</div>

<div id="currentLocationBubbleContainer">
    ... 
</div>

<script>
$("#googleMapCanvas").on('click', 'a', function(event) {

     var host = event.target.host;      
     var isGoogleExternalLink = false;

     if (host != null && host.search(".google.") != -1 ){
             isGoogleExternalLink = true;
     }

     //It's not enough to check the innerHTML because it's content varies 
     //depending on the device langage, so in stead I check if it is not 
     //a click on the google logo, or on the terms of use which are external links
     if (event.target.innerHTML == "Map Data" || ! isGoogleExternalLink ){
             hideCurrentLocationBubble();
     }
     });

     //Close button of Map Data window
     $("#googleMapCanvas").on('click', 'img', function(event) {

         if (event.target.src == "https://maps.gstatic.com/mapfiles/transparent.png"){
             showCurrentLocationBubble();
         }
     });
</script>
4

1 に答える 1

1

.click()そのイベントをどこにバインドしますか?デフォルトでは委任されないため、コードの呼び出し時にマップが存在しない場合、そのイベントはバインドされません。.on()代わりに使用してみてください:

$("googleMapCanvas").on('click', 'a', function() {
    alert("link under map clicked");
});
于 2012-12-06T17:06:46.930 に答える