我的代码有什么问题
您的代码永远不会到达对 的调用setInterval
,因为您的
return getRef(ref_id);
行结束函数。
如何在二次点击时删除 setInterval?
通过记住你是否有一个跑步。setInterval
返回一个“计时器句柄”,它是一个 not 的数字,0
您可以使用它来关闭它。因此,您可以使用初始化为 的变量0
来记住您是否正在运行计时器(并记住句柄以便您可以将其关闭):
(function() {
// A handle for setInterval, 0 = not set
var timer = 0;
$("#ref").on("click", ".mc", function(event) {
if (timer) {
// Timer is set, cancel it
clearInterval(timer);
timer = 0;
}
else {
// Timer is not set, set it
var ref_id = $(this).attr('ref_id');
// No `return` on the next line, it ends the function
getRef(ref_id);
timer = window.setInterval(function(ref_id){
getRef(ref_id);
}, 5000);
}
// If you need to return something from the click (for instance,
// `false`), do so here
});
})();
getRef
在上面我假设你在停止计时器时根本不想打电话。