我执行了以下操作:允许单击处理程序在单击后立即执行。但是,连续点击将禁止处理程序完全触发。这里的'连续'是从我上次做click
时测量的。我想测量上次执行click
处理程序时的时间。我正在考虑像startTime
函数这样的东西,可以测量自上一个执行click
处理程序以来经过的时间。有这样的功能吗?如果没有,你有什么建议?
我的代码:
let tdnTimeoutStatus;
let tdnStatus = true;
$('#toggleDepositNote').click(function() {
if (tdnStatus) {
toggleDepositNote();
tdnStatus = false;
}
if (tdnTimeoutStatus)
clearTimeout(tdnTimeoutStatus);
tdnTimeoutStatus = setTimeout(function() {
tdnStatus = true;
}, 250);
});
在思考之后,我实际上不需要测量上次事件处理程序触发时的时间。相反,我只需要setTimeout
,使处理程序在最后一个处理程序后的一段时间后再次触发。
我将上面的代码更改为以下内容:
let allowHandler;
let tdnStatus = true;
$('#toggleDepositNote').click(function() {
if (tdnStatus) {
toggleDepositNote();
tdnStatus = false;
allowHandler = setTimeout(function() {
tdnStatus = true;
}, 300);
}
}
但是,我确实欢迎更优雅的解决方案。