Обратный звонок в музее не остановится

0

Я пытаюсь отслеживать позицию мыши, пока вы нажимаете и перетаскиваете внутри 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 + " )");
    });
});

но они оба отслеживают положение мыши даже после того, как я отпустил мышь. Как я могу остановить его после того, как перестаю нажимать?

Стоит отметить, что я видел ответ на эти вопросы, это не сработает для меня, и я не уверен, почему.

JSFiddle

Теги:
mouseevent
mousedown

2 ответа

1
Лучший ответ

Что-то вроде того?

 $("div").mousedown(function() {
    $("div").on('mousemove', function(event) {
       $('div').html("( " + event.clientX + ", " + event.clientY + " )");
    });
 })

 $("div").mouseup(function() {
    $("div").off('mousemove');
 })

http://jsfiddle.net/7G7tx/2/

Вы связываете событие при нажатии кнопки мыши и отстегиваете его, когда кнопка отпущена.

  • 0
    это удалит все обработчики перемещения мыши из целевого элемента div, что может нарушить другие функции, связанные с ним.
1

Проблема в том, что вы не очищаете обработчики событий и вместо этого добавляете все больше и больше.

Проверь это

 $("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);
 });

http://jsfiddle.net/7G7tx/3/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню