Javascript 双击后只调用函数一次

Javascript 双击后只调用函数一次,javascript,html,jquery,Javascript,Html,Jquery,我有一个div框,它调用函数“nextStep”onclick 函数nextStep(){ 控制台日志(“下一步”); } test标记后,可以使用jquery的方法只允许单击一次 $(“#mydiv”)。一个(“单击”,下一步); 函数nextStep(){ console.log(“下一步”) } #mydiv{光标:指针} 单击我为避免双击触发,您可以将“单击”状态保存在变量中,并在执行功能代码之前请求它 如果要再次使用onclick侦听器(单击一次),可以在短时间后重置变量(300

我有一个div框,它调用函数“nextStep”onclick

函数nextStep(){
控制台日志(“下一步”);
}
test
标记后,可以使用jquery的方法只允许单击一次

$(“#mydiv”)。一个(“单击”,下一步);
函数nextStep(){
console.log(“下一步”)
}
#mydiv{光标:指针}


单击我
为避免双击触发,您可以将“单击”状态保存在变量中,并在执行功能代码之前请求它

如果要再次使用
onclick
侦听器(单击一次),可以在短时间后重置变量(300毫秒应足以防止双击)

let clicked=false;
函数nextStep(){
如果(!单击){
单击=真;
控制台日志(“下一步”);
}
setTimeout(函数(){
单击=假;
}, 300);
}

test
您可以利用这段时间锁定双击

运行代码段。如果上一次单击时间少于0.3秒,则单击将被阻止。您可以根据需要调整时间量

函数nextStep(){
var$div=$(“.test”);
如果(!$div.data('lockclick')| |+新日期()-$div.data('lockclick')>300){
控制台日志(“下一步”);
}
$div.data('lockclick',+new Date());
}


测试
在本机javascript中使用事件侦听器“dblclick”

const myDiv=document.querySelector(“#my div”);
myDiv.addEventListener('dblclick',函数(e){
console.log('双击')
});
#我的div{
宽度:200px;
高度:200px;
背景:黑色;
}

test
以下是如何以FP风格进行测试

const once=f=>{
let called=假;
return()=>{
如果(被调用)返回;
调用=真
f();
}
}
函数nextStep(){
控制台日志(“下一步”);
}
const nextStep once=一次(nextStep)

test
他只是想阻止双击。监听器应该不止工作一次…@biberman那么为什么OP明确地说,“只调用函数一次”?而且,“不可能两次调用”您的断言“侦听器应该工作不止一次”也没有在问题中陈述,您已经假设了这一要求。没有提到以后可以再次点击它。@freedomn-m,很可能,OP对这个问题不再感兴趣。@s.kuznetsov同意-我希望“OP没有反应”能有一个接近的投票结果:)他想防止双击触发,而不是检测到双击。。。,请澄清:按钮是否只能单击一次,还是在单击一次后在将来的某个特定时间重新启用?