Jquery MouseMove无限循环

时间:2015-07-06 11:37:28

标签: javascript jquery mousemove mousedown 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>");
})

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

即使clicked为false,也会发生mousemove事件。

2 个答案:

答案 0 :(得分:0)

如果不执行任何操作,您可以检查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/

答案 1 :(得分: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