Ваш код присоединяет обработчик new mouseup
к элементу #canvas
при каждом перемещении мыши . Используйте .one()
, чтобы прикрепить обработчик только один раз:
$(this).one('mouseup', function(e){
var X2 = (e.pageX - this.offsetLeft) - 8;
var Y2 = (e.pageY - this.offsetTop) - 8;
alert(X1 + " " + X2 + " " Y1 + " " + Y2);
});
Но лучшим решением было бы использование переменной состояния (и правильной области видимости):
var clicked = false;
var X1, Y1, X2, Y2;
$("#canvas").mousedown(function(e){
X1 = (e.pageX - this.offsetLeft) - 8;
Y1 = (e.pageY - this.offsetTop) - 8;
clicked = true;
});
$("#canvas").mouseup(function(e){
if (clicked) {
X2 = (e.pageX - this.offsetLeft) - 8;
Y2 = (e.pageY - this.offsetTop) - 8;
alert(X1 + " " + X2 + " " Y1 + " " + Y2);
clicked = false;
}
});