关于谷歌地图API v3的非常简单的问题。
我想更改 a> 标签的点击事件上的文本。这工作正常,但是当信息窗口关闭并重新打开时,文本将被重置。
条件:地图上将有多个标记。
这是我定义它在 For 循环中实际调用的标记的代码(没有发布):
contentString =
'<div id="infoContent">' +
'<div id="siteNotice">' +
'<h4 id="firstHeading" class="firstHeading">Store ' +
Store[x].StoreNumber +
' - ' +
Store[x].Location +
'</h4>' +
'<div id="bodyContent">' +
'<ul>' +
'<li><a onclick = "addDispatch(this,' + Store[x].DailyDispatchID +')"> Add </a></li>' +
'</ul>' +
'</div></div>';
infowindow = new google.maps.InfoWindow({
content: contentString
});
bindInfoWindow(marker, map, infowindow, contentString)
function bindInfoWindow(marker, map, infowindow, strDescription) {
google.maps.event.addListener(marker, 'click', function () {
infowindow.setContent(strDescription);
infowindow.open(map, marker);
});
}
如您所见,在内容字符串中,我定义了一个调用"addDispatch"的 onclick 事件。函数在这里:
function addDispatch(element, DispatchId) {
if (element.text == "Add") {
$(element).text("Remove");
} else {
debugger;
$(element).text("Add");
}
}
更改文本可以正常工作,但是一旦我重新打开信息窗口,它就会恢复为默认值。
有人有什么想法吗?
我猜是因为事件处理程序绑定到标记窗口的内容字符串。
我已经上下搜索了所有内容,但找不到解决方案。提前谢谢。
(请原谅调试器代码)
当您使用字符串作为content
时,每次打开信息窗口时都会解析此字符串。
关闭信息窗口时,将基于您的内容属性创建的 DOMNode 将被丢弃。
解决方案:使用 Node 而不是字符串作为内容属性。已应用于此节点的更改将是永久性的(当您关闭信息窗口时,该节点将与文档分离,但它仍然存在,并在您下次打开信息窗口时再次用作内容)
演示:http://jsfiddle.net/doktormolle/TLs8P/