jQuery追加不使用谷歌地图

时间:2015-01-25 10:38:55

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

我的jQuery追加功能不起作用。我有一个名为" CollapsiblePanelContent"的类的div。我还有一个谷歌地图标记生成器,为我生成标记。我有一个数组markerArr,它包含XML中的所有标记信息。当生成器完成后,我调用函数appendMarkers():

function appendMarkers() {   
for(var i = 0; i < markersArr.length;
i++) {      
var marker = markersArr[i];

$('.CollapsiblePanelContent').append("<a href='#'
onclick='showInfoWindow("+i+")>
 "+marker.getAttribute('name')+"</a><br>");     
} 
}

div看起来像这样:

div class =&#34; CollapsiblePanelContent&#34;&gt;

/ DIV&GT;

控制台日志记录为我提供了markerArr的确切长度,并检查是否加载了谷歌地图和jquery都是正面的。

有人能告诉我我做错了吗?

更新 不知怎的,当我在我的函数中使用marker.getAttribute时它没有用。 但是当我做了以下事情时:

var name = markersArr[i].getAttribute("name")

编辑以下内容:

$('.CollapsiblePanelContent').append(name);

确实有效。 对我来说,目前尚不清楚为什么这种改变使其发挥作用。也许有人可以解释一下?

2 个答案:

答案 0 :(得分:1)

该函数包含语法错误。

使用jQuery-way而不是string-concatenation来创建元素:

      function appendMarkers() {

        for(var i = 0; i < markersArr.length; i++) {      
          var marker = markersArr[i];

          $('.CollapsiblePanelContent')
            .append($('<a>',{href:'javascript:void(0)'})
                    .text(marker.getAttribute('name'))
                     .click(i,showInfoWindow))
            .append('<br/>');    
          } 
        }

注意:在showInfoWindow i - 参数可以通过arguments[0].data访问

答案 1 :(得分:0)

您可以向标记对象添加属性。检索后,您可以访问它们。所以:

假设您的标记设置方式如下:

var marker = new google.maps.Marker({
                position: myLatlng,
                map: map,
                name: 'my name is...'
});

您可以通过以下方式检索函数中的名称:

function appendMarkers() {
    for (var i = 0; i < markersArr.length; i++) {
        var marker = markersArr[i];
        $('.CollapsiblePanelContent').append("<p>"+marker.name+"</p>");
    }
}