停止运行jQuery函数
我需要停止jQuery中的一个函数,我尝试了停止运行jQuery函数,jquery,html,function,Jquery,Html,Function,我需要停止jQuery中的一个函数,我尝试了preventStop(),但我认为语法错误,代码如下: function changeColor(curNumber){ curNumber++; if(curNumber > 3){ curNumber = 1; } $('body').removeClass().addClass('bgColor' + curNumber); set
preventStop()
,但我认为语法错误,代码如下:
function changeColor(curNumber){
curNumber++;
if(curNumber > 3){
curNumber = 1;
}
$('body').removeClass().addClass('bgColor' + curNumber);
setTimeout(function(){changeColor(curNumber)}, 600);
}
changeColor(0);
如您所见,我正在更改类,现在,如果用户单击文档,我希望停止该操作
$('body').click(function(event){
event.stopPropagation();
})
像这样的事情对我不起作用。试试看
$('body').click(function(event){
event.preventDefault();
})
或者你也可以试一下
$('body').click(function(event){
return false;
})
您可以使用
返回false代码>来实现这一点
无论何时使用return false,控件都将返回。其他语句将不会执行。也就是说,事件将不会归档。setTimeout
返回计时器ID:
var timer = null;
function changeColor(curNumber) {
...
timer = setTimeout(function() {
changeColor(curNumber)
}, 600);
}
您可以使用clearTimeout
清除它:
$('body').click(function(event){
if (timer !== null) {
clearTimeout(timer);
}
})
如果您试图停止颜色的更改,那么您可以这样做,记住变量中的当前计时器,然后停止它:
var timer;
function changeColor(curNumber){
curNumber++;
if(curNumber > 3){
curNumber = 1;
}
$('body').removeClass().addClass('bgColor' + curNumber);
timer = setTimeout(function(){changeColor(curNumber)}, 600);
}
changeColor(0);
$('body').click(function(event){
clearTimeout(timer);
})
然后,您可以再次调用changeColor()
再次启动它。两件事:
对于重复事件,应使用setInterval
代替setTimeout
这两个函数都返回一个值,该值可以分别传递给clearTimeout
或cleartimiod
如果在外部作用域中调用setInterval
,并将其返回值存储在可访问的位置,则可以将click事件绑定到调用clearInterval
,并使用该值停止循环回调。可以使用.finish()代码>-->停止函数运行。不确定这是否是最佳实践,因为它基本上是为了控制效果
,但对我来说效果很好:
您的代码将变成这样
$('body').click(function(event){
event.finish();
})
这是一个模拟比较输入值后如何停止函数运行的示例
这就成功了!我只把$('body')换成了$('html')!非常感谢!!虽然它回答了问题,但请解释清楚。(避免单行回答)此外,每当你用一行回答时,不仅会使原始海报更难理解你的答案,还会触发自动审查,让像格林先生和我这样的用户进行审查。谢谢你的建议。下次在wards上,我会把它说清楚。