简体   繁体   English

jQuery MouseMove无限循环

[英]Jquery MouseMove infinity loop

I try to handle mouse move when mouse button is clicked. 单击鼠标按钮时,我尝试处理鼠标移动。 But when mouse button is released, mouse move event still works. 但是当释放鼠标按钮时,鼠标移动事件仍然有效。 Where is the problem and how to solve the problem? 问题出在哪里,如何解决?

Example: 例:

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/ JSFidle: https ://jsfiddle.net/r6hb3csp/1/

Even if clicked is false, mousemove event works. 即使单击为false,mousemove事件也有效。

You can check on the BOOLEAN clicked if it ture do your action if not do nothing Or you can unbind your event after mouseup like that:- 您可以检查单击的BOOLEAN是否可以执行操作(如果不执行任何操作),或者可以在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/ https://jsfiddle.net/r6hb3csp/7/

Please try this: 请尝试以下方法:

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 演示版

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM