3

我有一个使用间隔每 5 秒弹跳一次的 div。

当滚动到页面底部时,这个 div 淡出,间隔被清除。

但是,我认为间隔被多次创建并重叠本身存在问题。

有没有办法检查是否设置了间隔,如果设置了,则清除它,如果没有,设置它?

我需要清除间隔的原因是因为jquery的反弹效果导致div即使隐藏了也会再次出现。

JSBIN:http: //jsbin.com/ijuhok/4/

4

4 回答 4

4

似乎您在滚动时设置了间隔。因此,如果我向下滚动,然后再次向下滚动,则将其设置两次。

每次设置之前先清除它,你应该没问题。

http://jsbin.com/ijuhok/6

于 2011-10-31T15:58:14.823 回答
4

您需要覆盖现有间隔,以便您可以从任何地方清除它:http: //jsbin.com/ijuhok/5/

$j("#more").fadeIn('slow',function(){
    ResInterval = window.setInterval(bounceMore, 5000);
    // no "var"
});

你可以消除$(document).ready因为window它总是可用的。

于 2011-10-31T15:58:35.580 回答
1

您的问题是您ResInterval在本地范围内定义,因为您使用过var

$j("#more").fadeIn('slow',function(){
   var ResInterval = window.setInterval('bounceMore()', 5000);
});

删除var前缀,您的代码将按预期工作:目前,ResIntervalfadeIn. 省略时var,间隔将分配给最近的ResInterval声明(使用var)。

于 2011-10-31T16:00:02.487 回答
0

我这样做如下,我的问题解决了。当您 clearTimeout 计时器时,您应该将值设置为“false”。

var timeer=false;
----
----
if(timeer==false)
{
  starttimer();  
}
-----
-----
function starttimer()
{
  timeer=setInterval(activefunction, 1000); 
}

function pausetimer()
{
  clearTimeout(timeer);
  timeer=false;
}
于 2014-10-06T10:02:36.510 回答