在Google Maps v3中的循环中标记侦听器
Marker listener in a loop in Google Maps v3
我在index page
中创建了一堆标记,并在循环中向它们注册侦听器。我点击其中一个标记,它会将我带到next page
,在那里我有一个anchor button
,它需要知道是哪个标记启动了操作。我有一个下面的场景逐步:
- 单击标记1
//outputs a correct id 1 in console
- 带我进入下一页
//outputs a correct id 1 in console on clicking anchor
- 返回索引页面并单击标记2
//outputs a correct id 2 in console
- 带我进入下一页
//outputs both ids 1 and 2 in console on clicking anchor
最后一步是问题所在,我只想要id 2
。事实上,如果我第三次重复这个过程,我会得到所有的id 1、2和3,而在这种情况下我只想要id 3
。
我的代码:
$.each(otherLocations, function(index, value){
var markerOtherLocations = new MarkerWithLabel({
position: new google.maps.LatLng(value.latitude, value.longitude),
map: map,
title: value.name+" "+value.distance,
icon: iconImage,
labelContent: value.name+" "+value.distance,
labelAnchor: new google.maps.Point(50, 0),
labelClass: "labels", // the CSS class for the label
labelStyle: {opacity: 0.60}
});
google.maps.event.addListener(markerOtherLocations, 'click', function() {
$.mobile.changePage("#detail-page", { transition: "flip"} );
console.log(value.localurl);//Outputs correct url
$("#ref").on("click", function(){ //The problem is in this anchor click
console.log(value.localurl);//Outputs the current as well as all the previous urls
});
});
});
每次单击标记OtherLocations时,它都会为导致问题的#ref
注册一个全新的onclick
事件回调。请记住,一个事件可以通过多次回调进行注册。考虑以下代码:
$("#ref").on("click", function(){
console.log('do function A');//register A first
});
$("#ref").on("click", function(){
console.log('do function B');//register B later, which won't be overridden.
});
//If you click #ref then, it'll output A and B, following the registered sequence before.
所以在我看来,你的代码可能是:
google.maps.event.addListener(markerOtherLocations, 'click', function() {
$.mobile.changePage("#detail-page", { transition: "flip"} );
console.log(value.localurl);//Outputs correct url
$("#ref").data('origin',value.localurl);
});
$("#ref").on("click", function(){ // register once
console.log($(this).data('origin'));
});
相关文章:
- 如何在for循环中添加事件侦听器
- 如何将InfoBoxes与googlemaps实用程序库v3绑定到循环中的点击侦听器
- 如何动态创建$rootScope$angularjs中for循环中的事件侦听器
- Gmaps API-在循环中添加事件侦听器总是指向最后一个标记
- Javascript 通过循环添加事件侦听器
- 将侦听器添加到标记在循环中不起作用
- 没有循环的多个事件侦听器
- Javascript 在 foreach 循环中添加事件侦听器,只有最后一个条目有效
- 循环访问名称列表并在单击侦听器上添加 Jquery
- 循环中的闭包:在循环中声明的变量在绑定事件侦听器时未正确预设到处理程序函数中
- 使用for循环创建元素和事件侦听器
- 在循环内部应用mouseover事件侦听器
- 循环中有多个不同的事件侦听器
- 在Google Maps v3中的循环中标记侦听器
- Greasemonkey弹出循环未等待加载事件侦听器
- Javascript:循环遍历数组以创建侦听器,通过引用和值调用发出问题
- 添加单击侦听器以循环列出项目
- 在循环中创建标记-在单击侦听器时,信息窗口不会打开
- 在循环中加载多个图像并为每个图像添加侦听器
- 使用Google Maps v3中的一个变量(循环、闭包)将事件侦听器附加到一组标记上