setInterval后绑定不起作用

时间:2014-11-15 03:18:53

标签: javascript jquery setinterval

为什么bind在setInterval后不起作用?

var i = 0;
$('.click').bind('click').click(function(){
 var thisclick = $(this);
  var move = setInterval(function(){
    if(i < 30){
     i++;
     thisclick.unbind('click');
    }
    else{
     thisclick.bind('click');
     clearInterval(move);
    }
  },3000)
})

3 个答案:

答案 0 :(得分:0)

您必须将函数和时间传递给setInterval。就像下面的例子一样,你错过的时间就是你的代码。

setInterval(function(){alert("Hello")}, 3000);

所以改变将是

setInterval(function(){
    if(i < 30){
     i++;
     thisclick.unbind('click');
    }
    else{
     thisclick.bind('click');
     clearInterval(move);
    }
  },3000)//Give your value here

答案 1 :(得分:0)

绑定到click事件与问题无关。 setInterval()需要两个参数:触发时调用的函数,以及触发所述函数的时间间隔(以毫秒为单位)

例如:

var myInterval = setInterval(myFunction, 200);

这将每200毫秒触发一次“myFunction”方法。

答案 2 :(得分:0)

从jQuery 1.7开始.on()方法是首选,但实际问题是

  1. 您没有为第二个绑定提供处理程序(如果您想使用相同的处理程序重新绑定点击)
  2. 你需要重置/清除计数器,因为它是一个闭包变量,一旦达到它就会一直是30。

    $('.click').on('click', handler);
    
    var i = 0;               
    function handler(e) {
        e.preventDefault();
        var thisclick = $(this);
        var move = setInterval(function () {
            if (i < 10) {
                i++;
                thisclick.off('click');
            } else {
                thisclick.on('click', handler);
                i = 0; // reset here
                clearInterval(move);
            }
        }, 1000);
    };
    
  3. DEMO