防止单击处理程序反复在jQuery上触发,但允许在距上一次执行的处理程序一定时间后执行处理程序

时间:2019-02-08 03:39:49

标签: javascript jquery

我执行了以下操作:允许单击处理程序在单击后立即执行。但是,连续单击将根本不允许处理程序触发。这里的“连续”是从我上次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);
});

1 个答案:

答案 0 :(得分:0)

经过深思熟虑,我实际上不需要测量从事件处理程序上次触发以来的时间。取而代之的是,我只需要setTimeout即可使处理程序在最后一个处理程序之后的指定时间后再次触发。

我将上面的代码更改为以下代码:

let allowHandler;
let tdnStatus = true;
$('#toggleDepositNote').click(function() {
    if (tdnStatus) {
        toggleDepositNote();
        tdnStatus = false;

        allowHandler = setTimeout(function() {
            tdnStatus = true;
        }, 300);
    }
}

但是,我欢迎更优雅的解决方案。