使用jquery 1.7.2、jquery-tools 1.2.7和googlemaps api v3
首先,这是我在googlemaps中创建标记的代码片段:
function createMarker(latlng, id) {
var marker = new google.maps.Marker({
map: googleMap,
position: latlng,
});
marker.set('id', id);
google.maps.event.addListener(marker, 'click', function() {
property_id = marker.get('id');
alert("add listener -> " + property_id);
$("#contentWrapBeta").overlay({
mask: {
color: '#ebecff',
loadSpeed: 100,
opacity: 0.5
},
effect: 'apple',
left: '2%',
top: '5%',
load: false,
onBeforeLoad: function() {
alert("on before load" + property_id);
var wrap = this.getOverlay().find(".contentWrap");
wrap.load('details.php?id=' + property_id);
}
});
alert("overlay.load ->" + property_id);
$("#contentWrapBeta").overlay().load();
});
markers.push(marker);
}因此,当我单击第一个标记时,警报"add listener“将使用正确的property_id触发,"on well”警报将具有正确的属性id,"overlay.load“将具有正确的ID,弹出窗口出现,一切都很好...
当我点击地图上的第二个标记时,"add listener“警报显示正确的ID (我设置的新标记id ),"overlay.load”也是正确的,但是,
"on before“警告有以前的标记property_id (!) --不管我怎么尝试,我似乎都不能用我点击的新标记id来更新它,它”卡住“在第一个标记property_id上-所以wrap.load()用相同的&id=变量调用。
有人能告诉我为什么吗--它已经困扰我好几天了!我似乎解决不了这个问题。
非常感谢
发布于 2012-06-04 04:39:34
啊,我知道了
感谢irc.freenode.org上的#jquery上的shonky
似乎我需要将data()添加到我的覆盖定义中
我改变了这一点:
$("#contentWrapBeta").overlay({
mask: {
....,
onBeforeLoad: function() {
alert("on before load" + property_id);
var wrap = this.getOverlay().find(".contentWrap");
wrap.load('details.php?id=' + property_id);
}
});至
$("#contentWrapBeta").data('property_id', property_id).overlay({
mask: {
....,
onBeforeLoad: function() {
var propertyA_id = $('#contentWrapBeta').data('property_id');
alert("on before load" + propertyA_id);
var wrap = this.getOverlay().find(".contentWrap");
wrap.load('details.php?id=' + propertyA_id);
}
});https://stackoverflow.com/questions/10869750
复制相似问题