Я пытаюсь создать простой интерфейс рисования с помощью Jquery, где можно рисовать фигуры в div. Я использую обработчики событий mousedown-mouseup для достижения этой формы. На каждом мышеловке мышь должна нарисовать фигуру на div. Я использую отдельные обработчики для mousedown и mouseup вместо одного щелчка, потому что я хочу сделать фигуру изменчивой до мыши.Mousedown-mouseup создает divs экспоненциально
ПРОБЛЕМА:
В моей fiddle, есть пространство слева, где, когда я захожу каждый клик, чтобы увидеть, сколько формы созданы.
Сначала нажмите, он отлично работает. Я получаю приятную форму. Тем не менее, на последующих попытках, один mousedown-mouseup, кажется, создает больше divs «на заднем плане». Журнал показывает дополнительные div для каждого клика, пока вы видите только одну фигуру для каждого клика.
Интересно, почему это происходит?
JS:
var num=0;
$('.draw').mousedown(function(e){
var newDiv = null;
newDiv = $('<div>').addClass('rec').css({
'top': e.pageY,
'left': e.pageX
}).appendTo(this);
$(this).mouseup(function(){
num++
$('.elems').append($('<p>').text('rec '+num));
});
});
Спасибо. Это работает. Я думаю, что по какой-то причине поместите «мышь» внутрь, но поскольку это создает некоторый конфликт, я просто иду с этим. – qtgye
О, кстати. Причина, по которой я сделал свой код, - это то, что в 'mouseup' я пытаюсь использовать переменную, созданную в' mousedown'. Эта переменная не будет доступна, если я подключу 'mouseup', так как он локально создан в' mousedown'. – qtgye
Если вы планируете назначить его внутри события mousedown для доступа к созданному div, я бы посоветовал использовать вторую «глобальную» переменную (например, «num') для хранения ссылки на текущий« отредактированный »div 'или добавление к нему класса' last'. –