【问题标题】:mousehold event while doing mousemove执行 mousemove 时的 mousehold 事件
【发布时间】:2012-01-27 07:01:48
【问题描述】:

我已经为鼠标按住事件下载了一个 JQuery 插件。

http://remysharp.com/2006/12/15/jquery-mousehold-event/

我有一个调用 mousemove 事件的 div:

div.addEventListener('mousemove',function() {
//things
});

每当我像这样调用 mousehold 事件时:

var value = 0;
$(div).mousehold(function() {
value += 20;
$(div).html(value);
});

它会起作用的。但是,如果我在 onmousehold 时开始移动(因此调用 mousemove 事件),则该值不再增加,这意味着,即使我的左键单击仍处于保持状态,它也会停止调用 mousehold 事件。

我怎样才能使当我执行 mousemove 时,mousehold 事件仍然有效? tnx!

【问题讨论】:

    标签: javascript jquery html css mousemove


    【解决方案1】:

    您要问的(至少,我认为您要问的)足够简单,并带有一些基本逻辑。

    通过绑定 mousedown、mousemove 和 mouseup 并为鼠标的“向下”状态设置一个标志,这可以很容易地完成:JSFiddle

    【讨论】:

    • 尝试使用我发布的 jquery 插件。在我在这里发布之前,我已经尝试过你的解决方案。问题是当一个新事件被调用时, mousehold 事件被取消。您的解决方案和我正在寻找的解决方案之间的区别在于,值的增量是在 mousemove 事件中进行的,但我想要的增量是在 mousehold 事件中发生的。感谢您的帮助!
    【解决方案2】:

    你可以像这样使用事件对象:

    div.addEventListener('mousemove', function(event) {
    
      // `event.buttons` gets the state of the mouse buttons
      // 0 = not pressed, 1 = left click pressed, 2 = right click pressed
      if (event.buttons === 1) {
        value += 20;
      }
    
    });
    

    【讨论】:

      猜你喜欢
      • 2020-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多