Я пытаюсь отслеживать позицию мыши, пока вы нажимаете и перетаскиваете внутри div, и только при нажатии и перетаскивании. я использовал
$("div").mousedown(function() {
$("div").mousemove(function(event) {
$('div').html("( " + event.clientX + ", " + event.clientY + " )");
});
})
Я также пробовал
$("div").bind("mousedown mouseup", function () {
$("div").mousemove(function (event) {
$('div').html("( " + event.clientX + ", " + event.clientY + " )");
});
});
но они оба отслеживают положение мыши даже после того, как я отпустил мышь. Как я могу остановить его после того, как перестаю нажимать?
Стоит отметить, что я видел ответ на эти вопросы, это не сработает для меня, и я не уверен, почему.
Что-то вроде того?
$("div").mousedown(function() {
$("div").on('mousemove', function(event) {
$('div').html("( " + event.clientX + ", " + event.clientY + " )");
});
})
$("div").mouseup(function() {
$("div").off('mousemove');
})
Вы связываете событие при нажатии кнопки мыши и отстегиваете его, когда кнопка отпущена.
Проблема в том, что вы не очищаете обработчики событий и вместо этого добавляете все больше и больше.
Проверь это
$("div").mousedown(function() {
var mouseMoveHandler = function (event) {
$('div').html("( " + event.clientX + ", " + event.clientY + " )");
};
var mouseUpHandler = function (event) {
$("div")
.off('mousemove', mouseMoveHandler)
.off('mouseup', mouseUpHandler);
};
$("div")
.on('mousemove', mouseMoveHandler)
.on('mouseup', mouseUpHandler);
});