当用户将鼠标悬停在元素上时,我尝试清除间隔,然后当它们悬停在元素上时再次启动它。我认为这是一个封闭,但我不确定,希望我的代码能够理解我想要做的事情。
var rotatorInterval = function(elem){
var interval = setInterval(function(){
var active = elem.find('.dot.active');
if(active.is('.dot:last-of-type',elem)){
elem.find('.dot').first().click();
}else{
active.next().click();
}
},6000);
interval;
return interval;
};
if($('.rotator').length){
$('.rotator').each(function(){
var self = $(this);
rotatorInterval(self);
self.find('.slide, .dot').on('mouseenter',function(){
console.log('hovered');
clearInterval(interval);
});
});
}
我尝试从那个闭包中返回间隔,但是当我盘旋它时,表示间隔(我返回的变量的名称)没有被定义,所以它就像它没有返回它或者什么。 / p>
答案 0 :(得分:3)
你只需要在某个地方实际返回间隔参考
var rotatorInterval = function (elem) {
var interval = setInterval(function () {
var active = elem.find('.dot.active');
if (active.is('.dot:last-of-type', elem)) {
elem.find('.dot').first().click();
} else {
active.next().click();
}
}, 6000);
return interval;
};
if ($('.rotator').length) {
$('.rotator').each(function () {
var self = $(this);
var return_interval = rotatorInterval(self);
self.find('.slide, .dot').on('mouseenter', function () {
clearInterval(return_interval);
});
});
}