比如说,我想让 $("#id").click(function(){ ... }) 每隔5秒才能被触发一次。
请问要怎么做呢?
认证0级讲师
如果是在和dom节点有交互的,其实点击完成之后直接 disabled,然后setTimeout启用就行了,最简单的思路
看一下这个去抖与节流 中的 _.throttle(fun, time)
用个标记变量控制可点击状态 大概这么写
http://jsfiddle.net/9np6rwhr/
var myTimeout = null; $("#id").click(function(){ clearTimeout(myTimeout); myTimeout = setTimeout(function() { ... }, 5e3); });
@runner_sam 和它查不多的有个Rx库代码子差不多是这样的
var $meter1 = $(".meter1"); var meter1Click = Rx.Observable.fromEvemt($meter1, 'clock') .throttle(1000); /*这里延时*/ meter1Click.subscribe(function(e){ /* Do somthing */ });
LZ要求的是每隔5秒触发一次,即是周期性的。 setTimeout是一次性的,应该用setInterval啦。 例如这样:
//每隔5秒点击一次 setInterval(function(){ $('#id').click(); },5000);
如果是在和dom节点有交互的,其实点击完成之后直接 disabled,然后setTimeout启用就行了,最简单的思路
看一下这个去抖与节流 中的
_.throttle(fun, time)
用个标记变量控制可点击状态
大概这么写
http://jsfiddle.net/9np6rwhr/
@runner_sam 和它查不多的有个Rx库代码子差不多是这样的
LZ要求的是每隔5秒触发一次,即是周期性的。
setTimeout是一次性的,应该用setInterval啦。
例如这样: