Jquery mousedown + mousemove

29 jquery

如何在鼠标停止并移动时触发JQuery中创建事件?每次mousedown + mousemove只触发一次?

Mat*_*att 60

更新:

因此,看起来如果您的鼠标不再位于绑定onmouseup的元素上,它将不会看到鼠标注册事件.有意义的是,当你停下来思考它时,但当mousedown事件发生在元素上时,我们期望,作为UI用户,它知道它何时被释放(即使它不在元素上).

因此,为了解决这个问题,我们实际上在文档级别上检测了mouseup.

var clicking = false;

$('.selector').mousedown(function(){
    clicking = true;
    $('.clickstatus').text('mousedown');
});

$(document).mouseup(function(){
    clicking = false;
    $('.clickstatus').text('mouseup');
    $('.movestatus').text('click released, no more move event');
})

$('.selector').mousemove(function(){
    if(clicking == false) return;

    // Mouse click + moving logic here
    $('.movestatus').text('mouse moving');
});
Run Code Online (Sandbox Code Playgroud)

我在jsbin上尝试了这个,它似乎工作.在这里查看:http://jsbin.com/icuso.要编辑它(请参阅JS和HTML),只需在URL的末尾标记"编辑". http://jsbin.com/icuso/edit.


Mo *_*ami 41

使用以下代码

$(element).mousemove(function(e){
 if(e.which==1)
 {
   #do job
 }
});
Run Code Online (Sandbox Code Playgroud)

更新:
对于某些浏览器,您可能希望使用此:

$(element).mousemove(function(e){
 if(e.buttons==1)
 {
   #do job
 }
});
Run Code Online (Sandbox Code Playgroud)


小智 7

我为音频音量控制器做了以下操作:

$('#control-vol').bind('mousedown', function(e){
    $('#control-vol').bind('mousemove', function(e){
        var volumen = e.pageX - this.offsetLeft;
        $('#barra-vol').width(volumen + 'px');
        $('audio')[7].volume = volumen/50;
    });

    $('#control-vol').bind('mouseup',function(){
        $('#control-vol').unbind('mousemove')
    });
});
Run Code Online (Sandbox Code Playgroud)


Noa*_*dja -3

或许:

$('input').mousedown(function{
    $('input').mousemove({
      etc
    });
});
Run Code Online (Sandbox Code Playgroud)

但出于某种原因,我认为你已经尝试过了..