javascript 鼠标移动仅适用于左键

1sbrub3j  于 2022-12-25  发布在  Java
关注(0)|答案(3)|浏览(165)

如何使用jQuery,使mousemove事件仅在鼠标左键一直按下时才处于活动状态,而一旦松开鼠标左键,mousemove事件就会停止?

mefy6pfw

mefy6pfw1#

这里我在mousedown时绑定mousemove事件,在mouseup时解除绑定。我使用了jQuery中的一个很酷的特性,这样就可以将其他mousemove事件添加到这个选择器中,但只有您想要解除绑定的事件被删除,它们被称为Namespaced Events

$("#yourdivid").mousedown(function(e){
    if(e.which == 1){
        $(this).bind('mousemove.coolnamespace', function(e){
            // Your mousemove event
        });
    }
}).mouseup(function(e){
    if(e.which == 1) $(this).unbind('mousemove.coolnamespace');
})

**编辑:**我更新了我的答案以使用规范化字段which。jQuery将其规范化为1 =左,2 =中,3 =右。button值将根据浏览器的不同而不同。

1zmg4dgp

1zmg4dgp2#

最简单的方法是保留一个标志,只有当鼠标左键一直被按下时才将其设置为true,这意味着当鼠标左键被按下时必须将其设置为true,当鼠标左键被释放时必须将其重置为false,然后只有当该标志为true时才执行mousemove。
它不是jQuery特定的解决方案,而是解决此类问题的通用模式,因此jQuery可能提供更好的解决方案。
您可能需要处理一些特殊情况,比如丢失输入焦点或鼠标光标在按住左键的同时离开div。

ubof19bj

ubof19bj3#

绑定mousedown事件并在该函数中调用mousemove,然后使用jQuery unbind事件删除mousemove;
第一个月
`

$button.mousedown(function(){
            $(this).mousemove(function(){
                //Events here
            });
        }).mouseup(function(){
            $(this).unbind("mousemove");
        });

`
``

相关问题