为什么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)
})
答案 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()
方法是首选,但实际问题是
你需要重置/清除计数器,因为它是一个闭包变量,一旦达到它就会一直是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);
};