我想在触发两个事件处理程序时运行一些代码。 我已经试过这样:两个jQuery事件处理程序 - 当两者都被触发时执行代码
$('#box').mousedown(function(){
$(document).bind('mousemove',function(e){
// more code here
});
});
但代码时,我触发鼠标按下一次,之后移动我的鼠标甚至工程。我只想在鼠标关闭并且正在移动时执行代码。 我该如何做到这一点?
我想在触发两个事件处理程序时运行一些代码。 我已经试过这样:两个jQuery事件处理程序 - 当两者都被触发时执行代码
$('#box').mousedown(function(){
$(document).bind('mousemove',function(e){
// more code here
});
});
但代码时,我触发鼠标按下一次,之后移动我的鼠标甚至工程。我只想在鼠标关闭并且正在移动时执行代码。 我该如何做到这一点?
试试这个镜头?有一个全局变量,指出鼠标是否关闭。当他们在#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
}
});
});
我想你遇到的问题与您的事件处理工作,一旦你添加一个事件处理程序就会听出来其事件的方式理解。
所以你的代码添加事件处理程序来监听mousedown
当DOM准备好了,一旦发生就会增加一个事件mousemove
- 该文件目前已拥有注册,以便它能向两家独立做的东西既事件处理程序。
你想做什么,是删除事件处理程序mousemove
在mouseup
事件。这样文档现在不再监听mousemove
事件处理程序,因为它已被删除。
$('#box').mousedown(function(){
$(document).bind('mousemove',function(e){
// Do something:
});
});
$(document).mouseup(function(){
$(document).unbind('mousemove');
});
Here is a simple example,所以你可以看到发生了什么它将增加下box
的消息。
使用
event.stop()
或
event.die()
片断使用前的事件。 示例:
$("#mybutton").unbind("click");
$("#mybutton").die();
$("#mybutton").click(function(){ alert("Hy mate!");});
仅供参考,您遇到的行为确实有意义。鼠标停止事件触发后,您将绑定mousemove事件。它不像函数调用。 – Craig 2011-05-06 10:34:44
[jquery等待多个完整事件]的可能重复(http://stackoverflow.com/questions/7432815/jquery-wait-for-multiple-complete-events) – GingerPlusPlus 2016-07-23 13:05:40