Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 两个jQuery事件处理程序-在两个事件都被激发时执行代码_Javascript_Jquery_Events - Fatal编程技术网

Javascript 两个jQuery事件处理程序-在两个事件都被激发时执行代码

Javascript 两个jQuery事件处理程序-在两个事件都被激发时执行代码,javascript,jquery,events,Javascript,Jquery,Events,我想在两个事件处理程序都被触发时运行一些代码。 我试过这样做: $('#box').mousedown(function(){ $(document).bind('mousemove',function(e){ // more code here }); }); 但是当我触发mousedown一次,然后再移动鼠标时,代码甚至可以工作。我只想在鼠标按下并移动时执行代码。 我怎样才能做到这一点呢?试着试一试?有一个全局变量,指示鼠标是否按下。在#框元素上向下

我想在两个事件处理程序都被触发时运行一些代码。 我试过这样做:

$('#box').mousedown(function(){ 
    $(document).bind('mousemove',function(e){ 
       // more code here 
    }); 
}); 
但是当我触发mousedown一次,然后再移动鼠标时,代码甚至可以工作。我只想在鼠标按下并移动时执行代码。
我怎样才能做到这一点呢?

试着试一试?有一个全局变量,指示鼠标是否按下。在
#框
元素上向下鼠标时,全局变量设置为true。当他们滑鼠时,它被设置为false

$(document).ready(function(){
    var mouseDown = false;

    $("#box").mousedown(function(){
        mouseDown = true;
    });

    $(document).mouseup(function(){
        mouseDown = false;
    });

    $(document).mousemove(function(){
        if (mouseDown){
            //do your stuff here
        }
    });
});

试试这个?有一个全局变量,指示鼠标是否按下。在
#框
元素上向下鼠标时,全局变量设置为true。当他们滑鼠时,它被设置为false

$(document).ready(function(){
    var mouseDown = false;

    $("#box").mousedown(function(){
        mouseDown = true;
    });

    $(document).mouseup(function(){
        mouseDown = false;
    });

    $(document).mousemove(function(){
        if (mouseDown){
            //do your stuff here
        }
    });
});

我认为问题在于你对事件处理程序工作方式的理解,一旦你添加了一个事件处理程序,它就会监听它的事件

因此,当dom准备就绪时,您的代码将添加一个事件处理程序来侦听
mousedown
,一旦发生,它将为
mousemove
添加一个事件-文档现在已注册了两个事件处理程序,因此它将分别为这两个事件处理程序执行操作

您要做的是删除
mouseup
事件上的
mousemove
的事件处理程序。这样,文档现在不再侦听
mousemove
事件处理程序,因为它已被删除

$('#box').mousedown(function(){
    $(document).bind('mousemove',function(e){ 
        // Do something:
    }); 
});
$(document).mouseup(function(){
    $(document).unbind('mousemove'); 
});

,这样您就可以看到发生了什么。它将在
框下添加一条消息。我认为您遇到的问题是您对事件处理程序工作方式的理解,一旦您添加了事件处理程序,它将监听其事件

因此,当dom准备就绪时,您的代码将添加一个事件处理程序来侦听
mousedown
,一旦发生,它将为
mousemove
添加一个事件-文档现在已注册了两个事件处理程序,因此它将分别为这两个事件处理程序执行操作

您要做的是删除
mouseup
事件上的
mousemove
的事件处理程序。这样,文档现在不再侦听
mousemove
事件处理程序,因为它已被删除

$('#box').mousedown(function(){
    $(document).bind('mousemove',function(e){ 
        // Do something:
    }); 
});
$(document).mouseup(function(){
    $(document).unbind('mousemove'); 
});
,这样您就可以看到发生了什么。它将在
框下添加一条消息

event.stop()

请在使用事件之前删除代码段。 例如:

使用

event.stop()

请在使用事件之前删除代码段。 例如:


作为参考,您正在经历的行为确实有意义。一旦鼠标按下事件触发,您将绑定mousemove事件。这与函数调用不同。可能的重复作为参考,您正在经历的行为是有意义的。一旦鼠标按下事件触发,您将绑定mousemove事件。它不像函数调用。可能是