检查是否在一定时间内点击了“没有”按钮(jQuery)

基本上:

单击一个按钮,它将运行function1。
如果您未在1秒内再次单击该按钮,则运行function2。
如果在1秒内单击该按钮,则再次运行function1。
等等等等…

我无法弄清楚在Javascript中执行此操作的逻辑。

还有办法吗?

提前致谢!

从我的头顶(没有测试过这个,但这对我来说似乎最合乎逻辑):

var t = null; $("button").click(function() { console.log("this is function 1"); if (t !== null) { window.clearTimeout(t); } t = window.setTimeout(function() { console.log("and this is function 2"); }, 1000); }); 

您将需要使用计时器来跟踪时间。 您可以使用setTimeout在1秒(1000毫秒)内运行函数2。 但是,如果再次单击按钮,则应停止计时器。 你可以使用clearTimeout做到这一点。

核心线将是:

 var timer; // in button's click handler: clearTimeout(timer); timer = setTimeout(function2, 1000); 

这应该这样做:

 (function() { var timer = null; $('#button').on('click', function() { function1(); // always call function1 clearTimeout(timer); // clear the timer timer = setTimeout(function2, 1000); // run function2 1s later }); })(); 

见http://jsfiddle.net/alnitak/QZRTA/

外部function块用于将timer变量保留在本地范围内,而不创建全局变量。

使用setTimeoutclearTimeout

 var t = null; var timeoutMs = 1000; // in ms $("#btn1").click(function (){ func1(); if (t !== null) clearTimeout(t); t = setTimeout(func2, timeoutMs); }); 
 $('button').click(function() { console.log('Func 1'); clearTimeout($(this).data('throttle')); $(this).data('throttle', setTimeout(function() { console.log('Func 2'); }, 1000)); });​ 

http://jsfiddle.net/dfsq/rrXWt/