javascript - 检查按钮是否在时间内被点击

标签 javascript jquery settimeout conditional-statements

这是我想做的:

  1. 用户点击按钮,运行函数A
  2. 如果在 1 秒内没有再次点击按钮,也运行功能 B
  3. 如果按钮被点击,重复(再次运行函数 A 并检查函数 B)

这是我试过的

var clicked = false;

$('#button').click(function(){
    A();
}); 

function A(){
    clicked = true;
    setTimeout(function(){
         clicked == false;
    )}, 1000);

    setTimeout(function(){
        if ( clicked == false ) {
            B();
        }
    )}, 1000);
}

我认为代码适用于场景 12,但我怎样才能让它也适用于 3

编辑:刚刚看到一个相关的SO question发布后我没有通过搜索找到。请稍等,我正在检查它是否重复

最佳答案

我认为您正在寻求限制(缓冲)点击,也就是说,您希望在执行操作之前等待指定的时间,如果在您的限制时间内再次发生相同的事件,您将重新开始等待。 http://jsfiddle.net/8QdLV/

function B() {
    console.log('Clicked')
}
var timeoutId;
$('#button').click(function() {
    clearTimeout(timeoutId);
    timeOutId = setTimeout(B, 1000);
});

这可以推广http://jsfiddle.net/8QdLV/

function throttle(handler, buffer) {
    var timeoutId;
    buffer = buffer || 1000;
    return function(e) {
        clearTimeout(timeoutId);
        var me = this;
        timeoutId = setTimeout(function() {
            handler.call(me, e);
        }, buffer);
    }
}

$('button').click(throttle(function() {
    console.log('Throttled click');
});  

顺便说一句,你可能想使用 https://code.google.com/p/jquery-debounce/它还提供了一个$.throttle 函数

关于javascript - 检查按钮是否在时间内被点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23523256/

相关文章:

javascript - 使用 jquery/javascript 触发 svg 动画

javascript - 使用 javascript/jquery 在一个函数中编写多个按钮

javascript - storageRef.child 不是 firebase 中的函数

javascript - jQuery foreach 中的 setTimeout

javascript - 延迟 JavaScript 代码

php - 使用 Ajax 的动态菜单

javascript - 如何将实际值放入隐藏字段

javascript - Rivets.js rv-show 不适用于 rv-each

javascript - 如何在 jQuery 的 .html() 方法中使用 JavaScript 变量

javascript - setTimeout在循环中同时执行所有