当用户在ID为onClick
的元素上执行onClick
事件时,我想暂停.flipper
事件一秒钟。问题是当我调用TriggerOnClick()
函数时,它会永久禁用onClick
事件。
以下是我正在使用的代码
function TriggerOnClick(){
setTimeout(function() {
$(".flipper").off("click", TriggerOnClick);
}, 1000);
$(".flipper").on("click", TriggerOnClick);
}
$(".flipper").click(TriggerOnClick);
答案 0 :(得分:4)
你的逻辑有点倒退 - 你会立即禁用然后在超时中绑定:
function TriggerOnClick(){
setTimeout(function() {
$(".flipper").on("click", TriggerOnClick);
}, 1000);
$(".flipper").off("click");
}
答案 1 :(得分:2)
你实际上在一秒钟之后将其关闭。因此,可以清楚地了解首先发生的事情,我将.off
放在函数的顶部:
function TriggerOnClick(){
$(".flipper").off("click");
setTimeout(function() {
$(".flipper").on("click", TriggerOnClick);
}, 1000);
}
$(".flipper").click(TriggerOnClick);
答案 2 :(得分:0)
这可能是因为javascript中的setTimeout
函数具有误导性名称。它更像是来自其他语言的sleep()
或delay()
,因为它在第一个参数中执行函数之前等待指定的时间。
我认为你想要做的是
function TriggerOnClick() {
setTimeout(function() {
$(".flipper").on("click",TriggerOnClick);
}, 1000);
$(".flipper").off("click", TriggerOnClick);
}