停止.scroll函数在某个点之后触发

时间:2016-06-03 01:58:00

标签: jquery if-statement scroll

我在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()及其元素仅在其受尊重的区域高度内触发,而不与其他顶级条件触发器重叠。全部是为了获得最佳浏览性能。

1 个答案:

答案 0 :(得分:0)

如果您只想在滚动位于元素内时进行记录,则可以执行以下操作:

    if(wScroll > $('#section-one').offset().top 
       && wScroll < ($('#section-one').offset().top + $('#section-one').height()))
    {
        console.log('foo');
    }

只检查滚动位置是否在元素的顶部和底部之间

你可以为第二部分做同样的事情