我的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);
确实有效。 对我来说,目前尚不清楚为什么这种改变使其发挥作用。也许有人可以解释一下?
答案 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>");
}
}