我的jQuery追加函数不起作用。我有一个div,里面有一个名为"CollapsiblePanelContent"的类。我还有一个谷歌地图标记生成器,可以为我生成标记。我有一个数组标记Arr,其中包含来自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="CollapsiblePanelContent">
/div>
控制台日志记录给了我标记Arr的确切长度,并且检查谷歌地图和jquery是否加载都是积极的。
有人可以告诉我我做错了什么吗?
更新不知何故,当我在我的函数中使用 marker.getAttribute 时,它不起作用。但是当我执行以下操作时:
var name = markersArr[i].getAttribute("name")
并编辑以下内容以:
$('.CollapsiblePanelContent').append(name);
它确实奏效了。对我来说,目前尚不清楚为什么此更改使其有效。也许有人可以解释一下?
该函数包含语法错误。
使用 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
可以通过arguments[0].data
访问i
您可以向标记对象添加属性。检索后,您可以访问它们。所以:
假设您的标记是这样设置的:
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>");
}
}