javascript - 延迟 mousedown 间隔开始(JQuery/Javascript)

标签 javascript jquery settimeout setinterval mousedown

我正在编写一个 jQuery 插件,它可以在按下按钮时操作输入字段的值。

到目前为止,我所拥有的是通过单击按钮来控制值的能力,以及在用户按住按钮时不断增加它的能力。 简化后,脚本是这样的:

var element = $('#test-input');
var interval;

$('#test-up-button').on({
    mousedown : function(e) {
        element.val(parseInt(element.val()) + 1);

        //Wait 400ms, than do the interval

        interval = window.setInterval(function() {
            element.val(parseInt(element.val()) + 1);
        }, 200);      
        e.preventDefault();        
    },
    mouseup : function() {
        window.clearInterval(interval);
    }
});

(您还可以在此处查看工作版本:http://jsfiddle.net/Husar/Hxhsh/#base)

但是,正如您在评论中看到的那样,我还希望当 mousedown 事件发生时,在初始增加值之后,间隔函数延迟 400ms,然后才执行。

所以你按下按钮,值变为 + 1,你按住按钮一点,然后间隔开始滚动。

最佳答案

setInterval 包装在 setTimeout 中。并且,与 interval 一样,保留并清除 timeout 值:

var interval, timeout;

// ...

    timeout = window.setTimeout(function () {
        interval = window.setInterval(function() {
            element.val(parseInt(element.val()) + 1);
        }, 200);      
    }, 400);

// ...

    window.clearTimeout(timeout);
    window.clearInterval(interval);

http://jsfiddle.net/coiscir/jUSg8/

关于javascript - 延迟 mousedown 间隔开始(JQuery/Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9968023/

相关文章:

javascript - Ajax 将空格替换为 +

javascript - 关于JavaScript函数的两个问题

php - 从 json 结果创建嵌套 div

javascript - 在继续循环之前让 SetTimeout 完成

javascript - 这里为什么要用到setTimeout函数呢?

javascript - 使用 jQuery 插入时并不总是设置图像的高度

javascript - 暂停 iframe src 中的所有视频

javascript - 更改路线时 react native 重新渲染

javascript - 一次立即发出两个请求。 ASP MVC + JQuery Ajax

javascript - jQuery:悬停多个不同的类名