我想停止并在容器div的悬停上启动一个函数,我尝试了myLoop.stop();重置变量,但它不能正常工作...任何想法???
//Continuous Scroll
var nex = 1;
var timeInterval = 1000;
$(".logoContainer").hover(function(){
// Stop Function Here
},function () {
// Start Function Here
})
function myLoop () { // create a loop function
setTimeout(function () { // call a 3s setTimeout when the loop is called
if( cache.isAnimating ) return false;
cache.isAnimating = true;
aux.navigate( 1, $el, $wrapper, settings, cache );
nex++;
if (nex < 100) {
myLoop();
}
}, timeInterval)
}
myLoop();
答案 0 :(得分:1)
我建议在setTimeout
函数中放置一个标志,并根据您想要的事件更改此标志,请看一下:
http://api.jquery.com/hover/
你的代码可能需要一些重构,这样的事情怎么样(伪代码):
function callThisFunctionEveryXSeconds(){
if(continueFlag){
keepScrolling();
}
}
$(someDiv).mouseenter() { continueFlag = true; }
$(someDiv).mouseleave() { continueFlag = false; }
答案 1 :(得分:0)
使用clearTimeout
停止setTimeout
。
var nex = 1;
var timeInterval = 1000;
$(".logoContainer").hover(function(){
looper.stop();
},function () {
looper.start();
});
function myLoop () { // create a loop function
var timeout;
this.start = function(){
timeout = setTimeout(function () {
cache.isAnimating = true;
aux.navigate( 1, $el, $wrapper, settings, cache );
nex++;
if (nex < 100) {
myLoop();
}
}, timeInterval);
}
this.stop = function () {
clearTimeout(timeout);
}
}
var looper = new myLoop()
答案 2 :(得分:0)
好的,我必须更改结束函数的变量然后重置并在mouseout(hoverOut)上再次触发:
//Continuous Scroll
var nex = 1,timeInterval = 1000,loop = 0;
function myLoop () { // create a loop function
setTimeout(function () { // call a 3s setTimeout when the loop is called
if( cache.isAnimating ) return false;
cache.isAnimating = true;
aux.navigate( 1, $el, $wrapper, settings, cache );
nex++;
if (nex < 100) {
myLoop();
}
}, timeInterval)
}
myLoop();
$(".logoContainer").hover(function(){
nex = 100;
},(function(){
nex = 1;
myLoop();
})
);