我是Jquery的新手,目前面临一种我不理解的奇怪行为。欢迎任何参考。
我在Googlemaps上添加了一个标记,当我点击Marker时,我会保存X和Y鼠标坐标,这样我就可以将一个框设置为该位置的动画。一切正常但是当我检查控制台和自己的数据记录盒时,我看到每次单击标记时,函数saveXandY执行+1次。
以下代码:
// addmarker on click if markermode is on
google.maps.event.addListener(map, 'click', function( event ){
if (markerMode == true) {
addMarker(event.latLng);
}
});
function addMarker(location) {
var image = {
url: defaultMarkerIcon,
scaledSize: new google.maps.Size(defaultMarkerSizeX,defaultMarkerSizeY)
};
marker = new google.maps.Marker({
position: location,
draggable: defaultMarkerDraggable,
icon: image,
map: map,
});
markerMode = false;
marker.customInfo = i;
logData("Marker custominfo: " + marker.customInfo);
markers.push(marker);
i++;
map.setOptions({ draggableCursor: ''});
addListener();
}
function addListener() {
google.maps.event.addListener(marker, 'click', function(evt) {
logData("Marker custominfo: " + marker.customInfo);
saveXandY();
});
}
function saveXandY() {
$('#map').click(function(e) {
coordsX = e.pageX;
coordsY = e.pageY;
logData("Set X + Y: " + e.pageX + "," + e.pageY);
console.log("SaveXandY")
});
};
// simple log to databox
function logData(console){
$("#data").prepend(console);
$("#data").prepend('<br />');
}
控制台如下所示:
Set X + Y: 708,164
Set X + Y: 708,164
Set X + Y: 708,164
Set X + Y: 708,164
Set X + Y: 708,164
Marker custominfo: 0
Set X + Y: 708,164
Set X + Y: 708,164
Set X + Y: 708,164
Set X + Y: 708,164
Marker custominfo: 0
Set X + Y: 712,164
Set X + Y: 712,164
Set X + Y: 712,164
Marker custominfo: 0
Set X + Y: 712,164
Set X + Y: 712,164
Marker custominfo: 0
Set X + Y: 712,164
在添加标记后,似乎在单击地图时也会执行函数saveXandY()内的代码。情况并非如此。
如果有人有建议我会很高兴:) OMER
答案 0 :(得分:0)
替换:
$('#map').click(function(e) {
coordsX = e.pageX;
coordsY = e.pageY;
logData("Set X + Y: " + e.pageX + "," + e.pageY);
console.log("SaveXandY")
});
用这个:
$('#map').off().on("click", function(e) {
coordsX = e.pageX;
coordsY = e.pageY;
logData("Set X + Y: " + e.pageX + "," + e.pageY);
console.log("SaveXandY")
});
“关闭”将删除当前侦听器并添加新侦听器。如果可以的话,更好的解决方案是只调用一次saveXandY()。
更多关于“关闭”:http://api.jquery.com/off/