按住按钮 - >重复功能

时间:2013-05-24 13:49:45

标签: javascript settimeout setinterval

我正在努力实现一些不难做到的事情,但到目前为止我所尝试的一切都没有奏效。

我有一个每次单击按钮时都会更改值的函数,我想要的是:当我按住此按钮时,值应该不断变化。

这是我尝试过但没有用的,setInterval和setTimeout不会“等待”(函数get被立即调用数千次并且网站崩溃):

    $('.buttonPlus').mousedown(function() {
        timeoutID =setTimeout(distribucionPorcentual($(this)),1000);
    }).bind('mouseup mouseleave', function() {
        clearTimeout(timeoutID);
    });

任何帮助都将受到高度赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

你的代码是混乱的错误(一个错误的分号,两个缺少括号等)。在任何现代浏览器上,JS都会阻止事件绑定 - 你在IE上测试吗?

如果你是,这是一个更正版本:http://tinker.io/fd2da。我还修复了setTimeout调用中的一个小范围问题(this在setTimeout闭包调用中为null。)

代码:

 // stub the calls
 function distribucionPorcentual(arg) {
 }
 function distribution(arg) {
    console.log(arg);
 }
 $(document).ready(function(){
    $('.buttonPlus').mousedown(function() {
    console.log("Test");
        distribucionPorcentual($(this));
    var t = $(this);
       timeoutID =setTimeout(function() {distribution(t); },1000);
    }).bind('mouseup mouseleave', function() {
    console.log("Mouseup");
    clearTimeout(timeoutID);
    });
 });

您可能希望将setupout中的mouseup / mouseleave绑定,以避免必须处理全局变量。