1

我的网站上有谷歌地图。单击相应的标记时,每个信息窗口都会打开,并包含一个带有单独 ID 的复选框。当复选框被选中时,会触发控制台消息。这是代码:

function initialize() 
{
    var mapOptions = 
    {
        center: new google.maps.LatLng(-34.600, -58.400),
        zoom: 12,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        minZoom: 12,
        scrollwheel: false,
    };

    var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

    var point1 = new google.maps.LatLng(-34.600, -58.400)
    dot0001 = new google.maps.Marker(
    {
        position: point1,
        map: map,
    })

    var point2 = new google.maps.LatLng(-34.620, -58.400)
    dot0002 = new google.maps.Marker(
    {
        position: point2,
        map: map,
    })

    var infowindow = new google.maps.InfoWindow({});

    function filltheinfowindow(markername, numbercode, object) 
    {
        infowindow.open (map, markername)
        infowindow.setContent( 
            '<div id="tabsinfo'+numbercode+'" class="infotabs">'+
            '<ul><li><a href="#tabsinfo0001-1">Details</a></li>'+
            '<li><a href="#tabsinfo0001-2">Photos</a></li></ul>'+

            '<div id="tabsinfo0001-1">'+
            '<input name="" type="checkbox" id="checkboxinfo'+numbercode+'" value="">'+
            '</div>'+

            '<div id="tabsinfo0001-2">'+
            '<img src="_objects/_object0001/_images/1.jpg">'+
            '</div>'+   
        '</div>')
    }

    function activatecheckbox(numbercode)
    {
        $("#tabsinfo"+numbercode).tabs();

        $('#checkboxinfo'+numbercode).change(function() 
        {
            if($('#checkboxinfo'+numbercode).is(':checked'))
            {
                console.log("checkboxtest")
            }
        })
    }

    google.maps.event.addListener(dot0001, 'click', function()
    {
        filltheinfowindow(dot0001, "0001")
    })

    google.maps.event.addListener(dot0002, 'click', function()
    {
        filltheinfowindow(dot0002, "0002")
    })

    google.maps.event.addListener(infowindow, 'domready', function()    
    {
        activatecheckbox("0001") 
    })

    google.maps.event.addListener(infowindow, 'domready', function()
    {
        activatecheckbox("0002") 
    })
}

这是问题所在: 选中复选框时会触发两次控制台消息。

这是奇怪的事情:当我在标签二中加载没有图像的网页时,控制台消息只触发一次,就像它应该的那样。不幸的是,这些图像是我网站的重要组成部分。

对我来说,这完全没有意义。

任何帮助表示赞赏

4

1 回答 1

1

在我看来,您有两个“domready”事件侦听器。

1) google.maps.event.addListener(infowindow, 'domready', function()    
{
    activatecheckbox("0001")  
})

2) google.maps.event.addListener(infowindow, 'domready', function()
{
    activatecheckbox("0002") 
})

因此,当 dom 准备好时,这会触发 activatecheckbox 两次(每个事件侦听器一次)。

于 2013-02-28T02:39:53.547 回答