我在if
函数中包含多个条件$(window).scroll
语句。每个条件if
在文档上都有不同的$('#section').offset.top
点。但是,问题是每个if
的语句在窗口滚动通过页面上的不同部分后继续触发。
以下是一个简短的例子:
$(document).ready(function(){
$(window).scroll(function(){
var wScroll = $(this).scrollTop();
if(wScroll > $('#section-one').offset().top){
// do something!
console.log('foo');
}else{
//stop the something!
}
if(wScroll > $('#section-two').offset().top){
// do something!
console.log('foo');
}else{
//stop the something!
}
});
});
console.log()
仍会触发foo
&用户滚过两个bar
点后offset.top
。
如何阻止每个console.log()
及其元素仅在其受尊重的区域高度内触发,而不与其他顶级条件触发器重叠。全部是为了获得最佳浏览性能。
答案 0 :(得分:0)
如果您只想在滚动位于元素内时进行记录,则可以执行以下操作:
if(wScroll > $('#section-one').offset().top
&& wScroll < ($('#section-one').offset().top + $('#section-one').height()))
{
console.log('foo');
}
只检查滚动位置是否在元素的顶部和底部之间
你可以为第二部分做同样的事情