我有一个由几个部分组成的页面(想想经典的parralax设置)。现在,我已经构建了所有内容,当我滚动它们时,我想开始让某些部分做很酷的事情。
在我的无知中,我认为这意味着我需要为每个位置获取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语句...
没有这样的运气。尽管Flag显示为一体,它仍然继续运行。因此,对于每个incirment,我滚过“sectionFourPosition”,警报再次,再次,再次...
此SEEMS应该可以使用,而我的GoogleFu让我失望。
我遗漏了什么?
答案 0 :(得分: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);
});
答案 1 :(得分:0)
这是你的问题:
var sectionFourFlag = 0;
if( sectionFourFlag == 0 && scrollPosition >= sectionFourPosition ){
在JavaScript中定义sectionFourFlag == 0
时,部分sectionFourFlag
永远不会出错;你需要在这个程序之外初始化它。