2017-04-24 173 views
1

的动作,我从这个代码:Jquery: mousedown effect (while left click is held down) 据表现,如果我在每50ms按住该按钮,它会做什么。按住按钮使用jQuery

var timeout = 0; 
$('#button_add').mousedown(function() { 
    timeout = setInterval(function() { 
     value_of_something ++; 
    }, 50); 
    return false; 
    }); 
}); 

但我想要的是按住按钮1秒后执行此部分,它会持续执行动作50ms。

+0

你需要使用'set超时(函数(){//代码在这里},1000);秒' –

+0

后1我想在50ms的持续执行的代码,但不是每1秒后。 – keisaac

回答

2

正如我所说的,你需要使用setTimeout()

var timeout = 0; 
$('#button_add').mousedown(function() { 
    setTimeout(function(){ 
     timeout = setInterval(function() { 
        value_of_something ++; 
       }, 50);   
    } , 1000); 
    return false; 
}); 

Jsfiddle

+0

你可以添加我将如何阻止它?我不能老是用'鼠标松开及移出function' – keisaac

+0

@keisaac http://jsfiddle.net/mohamedyousef1980/8FmRd/1033/ –

+0

没那么存储友好的解决方案阻止它.. – kotapeter

-1

请使用此代码......你必须clearTimeout当用户鼠标松开:

var timeout = 0; 
 

 
$('#button_add').mousedown(function() { 
 
    oneSecondTimer = setTimeout(function() { 
 
     timeout = setInterval(function() { 
 
      value_of_something++; 
 
     }, 50); 
 
    }, 1000); 
 

 
    return false; 
 
}); 
 

 
$("#button_add").mouseup(function() { 
 
    clearTimeout(oneSecondTimer); 
 
});