2011-05-06 33 views
0

我想在触发两个事件处理程序时运行一些代码。 我已经试过这样:两个jQuery事件处理程序 - 当两者都被触发时执行代码

$('#box').mousedown(function(){ 
    $(document).bind('mousemove',function(e){ 
     // more code here 
    }); 
}); 

但代码时,我触发鼠标按下一次,之后移动我的鼠标甚至工程。我只想在鼠标关闭并且正在移动时执行代码。 我该如何做到这一点?

+0

仅供参考,您遇到的行为确实有意义。鼠标停止事件触发后,您将绑定mousemove事件。它不像函数调用。 – Craig 2011-05-06 10:34:44

+0

[jquery等待多个完整事件]的可能重复(http://stackoverflow.com/questions/7432815/jquery-wait-for-multiple-complete-events) – GingerPlusPlus 2016-07-23 13:05:40

回答

3

试试这个镜头?有一个全局变量,指出鼠标是否关闭。当他们在#box元素上声明时,全局变量被设置为真。当他们mouseup它被设置为false。 See a live example here

$(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 
     } 
    }); 
}); 
3

我想你遇到的问题与您的事件处理工作,一旦你添加一个事件处理程序就会听出来其事件的方式理解。

所以你的代码添加事件处理程序来监听mousedown当DOM准备好了,一旦发生就会增加一个事件mousemove - 该文件目前已拥有注册,以便它能向两家独立做的东西既事件处理程序。

你想做什么,是删除事件处理程序mousemovemouseup事件。这样文档现在不再监听mousemove事件处理程序,因为它已被删除。

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

Here is a simple example,所以你可以看到发生了什么它将增加下box的消息。

0

使用

event.stop() 

event.die() 

片断使用前的事件。 示例:

$("#mybutton").unbind("click"); 
$("#mybutton").die(); 
$("#mybutton").click(function(){ alert("Hy mate!");}); 
相关问题