【发布时间】:2010-07-31 22:06:14
【问题描述】:
我目前正在编写一个广泛使用谷歌地图 API (v3) 的 Rails 3 应用程序。目前,每个标记的信息窗口都包含一个链接,该链接将用户带到该特定标记的页面 - 即。 /地方/1。我的代码示例如下:
jQuery.getJSON("/places", function(json) {
if (json.length > 0) {
for (i=0; i<json.length; i++) {
var place = json[i];
var category = json[i].tag;
addLocation(place,category);
}
}
});
function addLocation(place,category) {
var marker = new google.maps.Marker({
位置:新 google.maps.LatLng(place.lat, place.lng), 地图:地图, 标题:地点.名称, 图标:图片[place.tag] });
marker.mycategory = category;
gmarkers.push(marker);
google.maps.event.addListener(marker, 'click', function() {
if (infowindow) infowindow.close();
infowindow = new google.maps.InfoWindow({
content: "<h3>"+ place.name +"</h3><p>" + place.tag +"</p><a href='/places/"+place.id+"'>Show more!</a>"
});
infowindow.open(map, marker);
});
}
到目前为止,这一切都很好,但我想通过引入 AJAX 调用来消除用户单击信息窗口链接后发生的页面刷新。这可能吗?任何帮助将不胜感激!
编辑:
.live 函数需要针对 infowindow 链接,因为 infowindows 通常是在 DOM 准备好之后创建的。所以我可以点击链接,但我正在努力从我的 map.js 文件中更新部分页面。我现在有这样的事情:
jQuery('#place_link').live('click', function() {
//alert("You clicked here.");
jQuery('#place_details').load('/places/"+place.id" #place_details');
return false;
});
...#place_details 包含有关我想通过 AJAX 调用更新的标记的信息。正如我上面提到的, .live 部分工作正常,因为单击链接时会出现警报(未注释掉时)。我该如何实现这一目标?
【问题讨论】:
标签: jquery ruby-on-rails ajax