鼠标移动时的鼠标按下事件

4
我已经下载了一个JQuery插件来处理鼠标按住事件。 http://remysharp.com/2006/12/15/jquery-mousehold-event/ 我有一个div元素,需要调用mousemove事件:
div.addEventListener('mousemove',function() {
//things
});

每当我像这样调用鼠标按住事件时:

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

如果我只是使用 onmousehold,它可以工作。但是,如果我在onmousehold期间开始移动(因此调用mousemove事件),则值不再增加,这意味着即使我仍然按住左键,它也停止调用 mousehold 事件。

如何让mousemove事件的同时仍然触发mousehold事件?谢谢!

2个回答

5

如果我理解得没错,你想要的(至少我认为你想要的)可以通过基本逻辑来实现。

通过绑定mousedown、mousemove和mouseup事件,并设置一个标志来表示鼠标的“按下”状态,这可以很容易地实现:JSFiddle


尝试使用我发布的jQuery插件。在发布这里之前,我已经尝试过你的解决方案。问题是当新事件被调用时,鼠标按住事件被取消了。你的解决方案和我要找的解决方案的区别在于,值的增加是在mousemove事件中进行的,但我想要的增加是在mousehold事件中发生的。感谢您的帮助! - AJ Naidas

0
您可以像这样使用事件对象:
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;
  }

});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接