如何使用jQuery,使mousemove事件仅在鼠标左键一直按下时才处于活动状态,而一旦松开鼠标左键,mousemove事件就会停止?
mousemove
mefy6pfw1#
这里我在mousedown时绑定mousemove事件,在mouseup时解除绑定。我使用了jQuery中的一个很酷的特性,这样就可以将其他mousemove事件添加到这个选择器中,但只有您想要解除绑定的事件被删除,它们被称为Namespaced Events。
mouseup
$("#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值将根据浏览器的不同而不同。
which
button
1zmg4dgp2#
最简单的方法是保留一个标志,只有当鼠标左键一直被按下时才将其设置为true,这意味着当鼠标左键被按下时必须将其设置为true,当鼠标左键被释放时必须将其重置为false,然后只有当该标志为true时才执行mousemove。它不是jQuery特定的解决方案,而是解决此类问题的通用模式,因此jQuery可能提供更好的解决方案。您可能需要处理一些特殊情况,比如丢失输入焦点或鼠标光标在按住左键的同时离开div。
ubof19bj3#
绑定mousedown事件并在该函数中调用mousemove,然后使用jQuery unbind事件删除mousemove;第一个月`
$button.mousedown(function(){ $(this).mousemove(function(){ //Events here }); }).mouseup(function(){ $(this).unbind("mousemove"); });
```
3条答案
按热度按时间mefy6pfw1#
这里我在mousedown时绑定
mousemove
事件,在mouseup
时解除绑定。我使用了jQuery中的一个很酷的特性,这样就可以将其他mousemove事件添加到这个选择器中,但只有您想要解除绑定的事件被删除,它们被称为Namespaced Events。**编辑:**我更新了我的答案以使用规范化字段
which
。jQuery将其规范化为1 =左,2 =中,3 =右。button
值将根据浏览器的不同而不同。1zmg4dgp2#
最简单的方法是保留一个标志,只有当鼠标左键一直被按下时才将其设置为true,这意味着当鼠标左键被按下时必须将其设置为true,当鼠标左键被释放时必须将其重置为false,然后只有当该标志为true时才执行mousemove。
它不是jQuery特定的解决方案,而是解决此类问题的通用模式,因此jQuery可能提供更好的解决方案。
您可能需要处理一些特殊情况,比如丢失输入焦点或鼠标光标在按住左键的同时离开div。
ubof19bj3#
绑定mousedown事件并在该函数中调用mousemove,然后使用jQuery unbind事件删除mousemove;
第一个月
`
`
``