Javascript 点击&;保持一段时间

Javascript 点击&;保持一段时间,javascript,jquery,Javascript,Jquery,$(“#操作”)。单击(函数(){ if(setTimeout(函数(){},1000)){ 警惕(“保持”); }否则{ 警报(“点击”); } }) 您好您需要处理mousedown事件,设置一个计时器两秒钟,然后在mouseup事件中取消该计时器。尝试下面的代码片段: $(文档).ready(函数(){ var timeoutId=0; var functionCalled=false; $(“#btn”)。在(“鼠标向下”,函数()上{ timeoutId=setTimeout(b

$(“#操作”)。单击(函数(){
if(setTimeout(函数(){},1000)){
警惕(“保持”);
}否则{
警报(“点击”);
}
})


您好
您需要处理
mousedown
事件,设置一个计时器两秒钟,然后在
mouseup
事件中取消该计时器。

尝试下面的代码片段:

$(文档).ready(函数(){
var timeoutId=0;
var functionCalled=false;
$(“#btn”)。在(“鼠标向下”,函数()上{
timeoutId=setTimeout(btnHeld,2000);
}).bind(“mouseup”,函数(e){
如果(!functionCalled){
警报(“点击”);
}
functionCalled=false;
clearTimeout(timeoutId);
});
函数btnHeld(){
functionCalled=true;
警惕(“保持”);
}
});


单击
你完全误解了
设置超时
的工作原理。@SLaks我想是的,我还认为通过键入
setTimeout(2000)
setTimeout()==2000
也不起作用。每次按下鼠标按钮最终都会被释放,所以总是会有一次“单击”。但是,用户可以在释放之前将指针移出元素。你需要做的是定义你想要的确切行为,并实现它,可能需要使用多个处理程序。在mousedown中,我尝试了if
mousedown
for
2000
和if
mousedown
for 1000`来模拟
单击
,但两个警报都是在后面出现的,
1000
然后
2000
因为您需要意识到setTimeout返回一个id,所以它不会做您认为它会做的事情