Jquery 单击延迟是否可能在新单击时重新启动

Jquery 单击延迟是否可能在新单击时重新启动,jquery,settimeout,Jquery,Settimeout,我有一个邮政编码列表,每个邮政编码旁边都有一个复选框。当用户选中或取消选中一个ZIP时,我正在重新绘制一张地图,上面绘制了ZIP多边形。与每次单击一类“polyZIP”时都让地图重新绘制不同,我希望在单击后1秒绘制地图时进行延迟。。。但有一部分我不确定。如果用户进入列表并快速检查/取消选中邮政编码,我希望每次单击都能重新启动1秒计时器,这样地图只会在单击停止至少一秒钟后重新绘制 我创建了一个(非常难看的)测试。您可以在小提琴上看到,如果您快速单击go按钮,最终结果区域将统计每次单击。我希望它基本

我有一个邮政编码列表,每个邮政编码旁边都有一个复选框。当用户选中或取消选中一个ZIP时,我正在重新绘制一张地图,上面绘制了ZIP多边形。与每次单击一类“polyZIP”时都让地图重新绘制不同,我希望在单击后1秒绘制地图时进行延迟。。。但有一部分我不确定。如果用户进入列表并快速检查/取消选中邮政编码,我希望每次单击都能重新启动1秒计时器,这样地图只会在单击停止至少一秒钟后重新绘制

我创建了一个(非常难看的)测试。您可以在小提琴上看到,如果您快速单击go按钮,最终结果区域将统计每次单击。我希望它基本上是任何点击将重新启动计数器

下面是难看的代码:

<script>
    var counter = 0;
    var timeout = "";
    $(function() {
        $("#go").click(function() {
            timeout = setTimeout(function() { actionFunction(); }, 3000);
        });
    });

    function actionFunction()
    {
        counter++;
        var results = $("#results").html() + "<br />" + counter;
        $("#results").html(results);
        clearTimeout(timeout);
    }
</script>

<input id="go" type="button" value="CLICK ME" /><br /><br />

<div id="results"></div>

var计数器=0;
var timeout=“”;
$(函数(){
$(“#go”)。单击(函数(){
timeout=setTimeout(function(){actionFunction();},3000);
});
});
函数actionFunction()
{
计数器++;
var results=$(“#results”).html()+“
”+计数器; $(“#结果”).html(结果); clearTimeout(超时); }


单击功能设置新超时之前,请清除超时

var计数器=0;
var timeout=“”;
$(函数(){
$(“#go”)。单击(函数(){
clearTimeout(超时);
timeout=setTimeout(函数(){
actionFunction();
}, 3000);
});
});
函数actionFunction(){
计数器++;
var results=$(“#results”).html()+“
”+计数器; $(“#结果”).html(结果); }




看起来您只需要将
clearTimeout(timeout)
移动到click函数本身的开头。我尝试在timeout=setTimeout之后将其移动到。。。线,但它根本不起作用。。。然后我将它移到“actionFunction();”之后,它的工作原理与在actionFunction函数中的工作原理相同。您是否尝试将它作为单击处理程序中的第一行代码?超时本身应该写得短一点:
Timeout=setTimeout(actionFunction,3000)