当mouseDown按下js时如何实现mousemove

时间:2015-06-13 10:19:46

标签: javascript jquery mouseevent mousemove mousedown

只有在按下鼠标时才需要实现鼠标移动事件。

只有在鼠标按下并移动鼠标时才需要执行“OK Moved”。

我使用了这段代码

 $(".floor").mousedown(function() {
  $(".floor").bind('mouseover',function(){
      alert("OK Moved!");
  });
})
.mouseup(function() {
 $(".floor").unbind('mouseover');
});

2 个答案:

答案 0 :(得分:14)

使用mosemove事件。

来自mousemovemouseover jquery docs:

  

当鼠标指针在元素内移动时,mousemove事件被发送到元素。

     

当鼠标指针进入元素时,mouseover事件被发送到元素。

示例:(检查控制台输出)

$(".floor").mousedown(function () {
    $(this).mousemove(function () {
        console.log("OK Moved!");
    });
}).mouseup(function () {
    $(this).unbind('mousemove');
}).mouseout(function () {
    $(this).unbind('mousemove');
});

https://jsfiddle.net/n4820hsh/

答案 1 :(得分:0)

在纯JavaScript中,您可以通过以下方式实现

function mouseMoveWhilstDown(target, whileMove) {
    var endMove = function () {
        window.removeEventListener('mousemove', whileMove);
        window.removeEventListener('mouseup', endMove);
    };

    target.addEventListener('mousedown', function (event) {
        event.stopPropagation(); // remove if you do want it to propagate ..
        window.addEventListener('mousemove', whileMove);
        window.addEventListener('mouseup', endMove);   
    });
}

然后使用

的功能
mouseMoveWhilstDown(
    document.getElementById('move'),
    function (event) { console.log(event); }
);

(nb:在上面的示例中,您不需要该功能-您可以将其称为mouseMoveWhilstDown(document.getElementById('move'), console.log),但除了将其输出到控制台之外,您可能还想对其进行其他操作!)