2014-02-20 66 views
2

我有一个定期由setInterval调用的功能。是否可以在点击时禁用该功能,没有取消clearInterval的时间间隔?点击禁用某个功能

所以说,我有一个函数:

function disable(){ 
    alert("hello"); 
} 

,它是被称为在这样一个设定的时间间隔:

window.setInterval(function() { 
    disable(); 
},1000); 

我可以从点击功能停止disable功能?

$("#foo").click(function() { 
//disable the disable function 
}); 

回答

0

您可以覆盖功能为好,因此禁用它:

$(document).ready(function() { 
    $("#foo").click(function() { 
     window["disable"] = function() { 
      //aborted 
     }; 
    }); 
}); 

Live test case。 (看控制台)

+0

你可以切换吗? – maxisme

+0

不容易,但您可以将原始功能存储在别处,然后在需要时进行恢复。 –

4

捕获setInterval的返回值(这是间隔id)。将其作为参数传递给clearInterval

+3

正是这样。您不“禁用该功能”,则禁用调用该功能的时间间隔。 – meagar

+2

我绝对不想要! – maxisme

+0

我不想清除间隔! – maxisme

0

尝试

var timer= window.setInterval(function() { 
disable(); 
},1000); 

$("#foo").click(function(){ 
clearInterval(timer); 
}); 
0

刚刚尝试这一点

var timer; 
timer = window.setInterval(function() { 
disable(); 
},1000); 

$("#foo").click(function() { 
    //disable the disable function 
    clearInterval(timer); 
}); 

感谢

0

没有禁用的时间间隔!

这是解决此问题的错误方法,您应该清除间隔,然后恢复它,如果您想恢复执行该功能。

如果你真的想要做这个没有清除间隔,你是在完全香草if声明。你不能“禁用”功能,你只需有条件地选择不执行功能的主体。

function myFunc() { 
    if (myFunc.disabled) return; 

    ... 
} 

myFunc.disabled = false; 

setInterval(myFunc, 1000); 

// to disable the function: 
myFunc.disabled = true;