2015-07-06 7 views
0

Я пытаюсь обработать перемещение мыши при нажатии кнопки мыши. Но когда кнопка мыши отпускается, событие перемещения мыши все еще работает. Где проблема и как решить проблему?JQuery MouseMove бесконечная петля

Пример:

clicked=false; 
var counter =0; 
$(document).mousedown(function(){ 
    clicked=true; 
    $(".clicked").text(clicked); 
    if(clicked){ 
    $(document).mousemove(function(){ 
     $(".mm").append(++counter+" "+clicked+"<br>"); 
    }); 
    } 
}); 
$(document).mouseup(function(){ 
    clicked=false; 
    $(".clicked").text(clicked); 
    $(".mm").html("mouseup, clicked: "+clicked+"<br>"); 
}) 

JSFidle: https://jsfiddle.net/r6hb3csp/1/

Даже если щелкнул ложно, MouseMove работы событий.

ответ

0

Вы можете проверить на булевой щелкнул, если он ры сделать ваши действия, если не делать ничего Или вы можете отвязать ваше мероприятие после mouseup как что: -

clicked=false; 
var counter =0; 
$(document).mousedown(function(){ 
    clicked=true; 
    $(".clicked").text(clicked); 
    if(clicked){ 
     $(document).mousemove(function(){ 
      $(".mm").append(++counter+" "+clicked+"<br>"); 
     }); 
    } 
}); 
$(document).mouseup(function(){ 

    clicked=false; 
    $(".clicked").text(clicked); 
    $(".mm").html("mouseup, clicked: "+clicked+"<br>"); 
    $(document).unbind("mousemove"); 
}) 

https://jsfiddle.net/r6hb3csp/7/

+1

Несвязанное событие также важно здесь как ** $ (document) .unbind ('mousemove'). Mousemove (** /// –

0

Пожалуйста попробуйте следующее:

clicked=false; 
var counter =0; 
$(document).mousedown(function(){ 
    clicked=true; 
    $(".clicked").text(clicked); 
    if(clicked){ 
      $(".mm").append(++counter+" "+clicked+"<br>"); 
    } 
}); 
$(document).mouseup(function(){ 
    clicked=false; 
    $(".clicked").text(clicked); 
    $(".mm").html("mouseup, clicked: "+clicked+"<br>"); 
}) 

Demo