一个div用于启动fadeToggle的内容,另一个div用于使用javascript setInterval函数停止fadeToggle动画
我的小提琴: CSS HTML 我的问题是stopCursor中的console.log将间隔显示为未定义 我看过这篇文章:一个div用于启动fadeToggle的内容,另一个div用于使用javascript setInterval函数停止fadeToggle动画,javascript,jquery,animation,setinterval,clearinterval,Javascript,Jquery,Animation,Setinterval,Clearinterval,我的小提琴: CSS HTML 我的问题是stopCursor中的console.log将间隔显示为未定义 我看过这篇文章: 所以我很确定这是一个范围问题,但我无法解决我的具体问题 您正在覆盖单击处理程序中的间隔变量 $("#targetedDiv").click(function(){fakeCursorInterval = startCursor()}); 仅此一点就应该起作用: $("#targetedDiv").click(startCursor); $("#otherDiv").c
所以我很确定这是一个范围问题,但我无法解决我的具体问题 您正在覆盖单击处理程序中的间隔变量
$("#targetedDiv").click(function(){fakeCursorInterval = startCursor()});
仅此一点就应该起作用:
$("#targetedDiv").click(startCursor);
$("#otherDiv").click(stopCursor);
除了@koala_dev提到的问题外,
setInterval
间隔是20
,fadeToggle
间隔是slow
(即600
)。因此,如果在1秒(1000毫秒)后调用stopCursor()
,则会调用fadeToggle
。在这种情况下,淡入淡出动画仍将持续30秒(即使setInterval已被清除)。要解决该问题,只需对fadeToggle
和setInterval
使用相同的持续时间(例如400
毫秒)。此外,您可以调用.stop()
,在停止光标()
处停止淡入淡出动画,并保证它将真正停止
var fakeCursorInterval;
function startCursor() {
$("#fakeCursor").show().fadeToggle(400, "swing");
fakeCursorInterval = setInterval(function() {
$("#fakeCursor").fadeToggle(400,"swing");
}, 400);
console.log("starting", fakeCursorInterval);
}
function stopCursor() {
clearInterval(fakeCursorInterval);
$("#fakeCursor").hide().stop();
console.log("stopping", fakeCursorInterval);
}
$("#targetedDiv").click(startCursor);
$("#otherDiv").click(stopCursor);
console.log("outside", fakeCursorInterval);
抓得好!我在JSFIDLE中做了这个更改,但单击“otherDiv”div并没有停止光标,但至少现在我从console.log获得了相同的fakeCursorInterval ID。
$("#targetedDiv").click(function(){fakeCursorInterval = startCursor()});
$("#targetedDiv").click(startCursor);
$("#otherDiv").click(stopCursor);
var fakeCursorInterval;
function startCursor() {
$("#fakeCursor").show().fadeToggle(400, "swing");
fakeCursorInterval = setInterval(function() {
$("#fakeCursor").fadeToggle(400,"swing");
}, 400);
console.log("starting", fakeCursorInterval);
}
function stopCursor() {
clearInterval(fakeCursorInterval);
$("#fakeCursor").hide().stop();
console.log("stopping", fakeCursorInterval);
}
$("#targetedDiv").click(startCursor);
$("#otherDiv").click(stopCursor);
console.log("outside", fakeCursorInterval);