2014-04-10 54 views
0

我有一个由几个部分组成的页面(想想经典的parralax设置)。现在,我已经创建了所有内容,我希望在滚动到某些部分时让某些部分变得更酷。为什么这个if语句继续执行?

在我的无知中,我假设我需要获取每个位置的offset()。top并将其与窗口的scrollTop()进行比较。

这里是我怎么回事,作为一个例子:

$(window).scroll(function(){ 

    var scrollPosition = $(this).scrollTop(); 
    var sectionFourPosition = $('.slideFour').offset().top; 

    var sectionFourFlag = 0; 

    if(sectionFourFlag == 0 && scrollPosition >= sectionFourPosition ){ 
     alert("You Passed the Top of Section Four"); 
     sectionFourFlag++; 
    }; 

    $('.ScrollPositionDisplay').text(scrollPosition); 
    $('.SectionFourOffsetDisplay').text(sectionFourPosition); 
    $('.SectionFourFlagDisplay').text(sectionFourFlag); 

}); 

我有一个小面板我用我展示各种变量的状态在我的项目。因为我只想执行一次,所以我在那里有SectionFourFlag。我想我可以然后翻转国旗到1,并应该打破IF声明...

没有这样的运气。尽管旗帜显示为一体,它仍然继续运行。因此,对于每一次我滑过“sectionFourPosition”的警告,警报会再次出现,再次,再次...

这SEEMS喜欢它应该工作,我的GoogleFu失败了我。

我遗漏了什么?

回答

0

这是你的问题:

var sectionFourFlag = 0; 

if(sectionFourFlag == 0 && scrollPosition >= sectionFourPosition ){ 

的一部分,而你在JavaScript中定义sectionFourFlagsectionFourFlag == 0永远不能是虚假的;您需要在此过程之外初始化它。

+0

所以,如果我知道我需要声明它之外的“.scroll $(窗口)(函数()” Becasue ......每次我滚动,而它在这里,我设置它回到0? 我希望我更接近Grokking这 – Incomitatum

+0

有点多,是的,如果你定义它的过程之外,它不会重置,你的代码会按预期工作 –

+0

感谢您抽出宝贵的时间来帮助您,我认为我现在明白了一点点。 – Incomitatum

1

,你做得很好,有一个错误:

$(window).scroll(function(){ 

    var scrollPosition = $(this).scrollTop(); 
    var sectionFourPosition = $('.slideFour').offset().top; 

    var sectionFourFlag = 0; 

    if(sectionFourFlag == 0 && scrollPosition >= sectionFourPosition ){ 
     alert("You Passed the Top of Section Four"); 
     sectionFourFlag++; 
    }; 

    $('.ScrollPositionDisplay').text(scrollPosition); 
    $('.SectionFourOffsetDisplay').text(sectionFourPosition); 
    $('.SectionFourFlagDisplay').text(sectionFourFlag); 

}); 

您重置每次滚动的时间你sectionFourFlag。你应该把var sectionFourFlag = 0;滚动功能外,如:?

var sectionFourFlag = 0; 

$(window).scroll(function(){ 

    var scrollPosition = $(this).scrollTop(); 
    var sectionFourPosition = $('.slideFour').offset().top; 

    if(sectionFourFlag == 0 && scrollPosition >= sectionFourPosition ){ 
     alert("You Passed the Top of Section Four"); 
     sectionFourFlag++; 
    }; 

    $('.ScrollPositionDisplay').text(scrollPosition); 
    $('.SectionFourOffsetDisplay').text(sectionFourPosition); 
    $('.SectionFourFlagDisplay').text(sectionFourFlag); 

}); 
+0

感谢您抽出时间帮助您。 – Incomitatum