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