我有一个包含7个标记点的数组,我想为每个标记添加一个点击处理程序。我想这样做
for (var i = 0; i <= 7; i++) {
google.maps.event.addListener(googleMarkerPoints[i], 'click', function () {
var selector = "div[data-num='" + i + "']";
$(selector).css({ "background-color": "#999" });
});
}
googleMarkerPoints
就像这样填充:
for (var i = 0; i < data.length; i++) {
var obj = data[i];
var latitude = obj.Latitude;
var longitude = obj.Longitude;
var title = obj.Title;
var thisLatlng = new google.maps.LatLng(latitude, longitude);
var thismarker = new google.maps.Marker({
position: thisLatlng,
map: map,
title: title
});
googleMarkerPoints.push(thismarker);
}
我的问题是每次点击处理程序selector
中的任何标记都会被填充
"div[data-num='7']"
我希望每个标记1到7的data-num会有所不同,为什么这些点击处理程序不能正常工作?
答案 0 :(得分:1)
您正在关闭i
,因此您只能获得所有活动的一个值。尝试将i
值传递给您的匿名函数,如下所示:
for (var i = 0; i <= 7; i++) {
(function(i){
google.maps.event.addListener(googleMarkerPoints[i], 'click', function () {
var selector = "div[data-num='" + i + "']";
$(selector).css({ "background-color": "#999" });
});
})(i)
}