【问题标题】:Catch "Map Data" onclick点击点击“地图数据”
【发布时间】:2012-12-06 17:03:50
【问题描述】:

我需要知道点击地图数据链接的时间(见图 1,右下角)。 当地图数据窗口打开时,它被覆盖的元素隐藏(图 2)。所以我必须在收到打开窗口的触发器时隐藏它们,并在关闭时重新显示它们。

我已经尝试捕获如下地图画布下的所有点击事件,但是当我点击“地图数据”时我没有被触发

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

有什么想法吗?

图片 1

图片 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>

【问题讨论】:

    标签: javascript google-maps google-maps-api-3


    【解决方案1】:

    你在哪里绑定.click() 事件?默认情况下不会被委托,因此如果在调用代码时映射不存在,则不会绑定该事件。尝试改用.on()

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

    【讨论】:

    • 事实上jquery .on('click').click() 更有效,即使我在地图充电后绑定它们也有点奇怪!你知道为什么它的行为不同吗?我将使用功能代码编辑问题。谢谢
    • 是的,我更喜欢使用.on(),我不再使用.click() 函数。我编写它的方式代表了事件,这在您的情况下非常有用。您可以阅读更多关于 here 的信息。不过那篇文章有点老了,目前的方法是使用.on()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 2013-09-10
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    相关资源
    最近更新 更多