2015-07-06 76 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/

即使點擊是假的,鼠標移動事件的作品。

回答

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