Javascript 滚动时:如果scrollTop()等于或达到值,则执行事件

Javascript 滚动时:如果scrollTop()等于或达到值,则执行事件,javascript,jquery,scroll,scrolltop,Javascript,Jquery,Scroll,Scrolltop,我试图在向下滚动到某个点/值时触发事件,并在再次上下滚动时再次执行 我试过: $(window).scroll(function(){ var sTop = $(this).scrollTop(); if(sTop == 300){ //execute event - failed } }); 使用鼠标滚轮和拖动滚动条,上述操作不会触发任何内容。但当我将条件更改为大于或等于时,事件将被执行,但在向下滚动时会执行多次 if(sTop >= 300

我试图在向下滚动到某个点/值时触发事件,并在再次上下滚动时再次执行

我试过:

$(window).scroll(function(){
    var sTop = $(this).scrollTop();

    if(sTop == 300){
        //execute event - failed
    }

});
使用鼠标滚轮和拖动滚动条,上述操作不会触发任何内容。但当我将条件更改为大于或等于时,事件将被执行,但在向下滚动时会执行多次

if(sTop >= 300){
    //execute event - success
}
我还尝试更改条件值,有时会触发事件

if(sTop == 333 /* or 431, 658, etc. */){
    //execute event - sometimes success
}
这是我的测验

如果您快速滚动,是否
scroll()
函数有时会跳过一个值


有人能解释一下这个问题,并帮助我解决当
$(window.scrollTop()==“value”
打开时如何触发事件的问题吗。谢谢,您面临这个问题,因为不能保证滚动将以1的增量完成。例如,某些滚轮的增量值为30。这意味着您将在30、60、90等位置获得一个滚动事件

测试滚动是否达到极限的最好方法是查看滚动是否超过了您想要的点,然后将滚动重置为您想要的精确点。所以你会这样做:

if(sTop >= 300){
    $(window).scrollTop(300);
}
下面是一个更新的JSFIDLE链接和一个工作示例:


如果您查看它,说明如何将其设置为可以覆盖滚动增量的位置。使用该方法,您应该能够预测用户滚动了多少个单位,而不会阻止他们向下滚动页面。

它正在工作<代码>==300按预期触发警报。如果用户再次上下滚动,是否希望再次执行警报?如果你能解释一下你想要执行什么样的函数以及为什么要执行,这可能会有所帮助。@godfrzero是的,谢谢。我已经更新了这个问题。如果使用$('div').append(','+sTop)第3行的代码;您将看到增量大于1。您需要更改基本逻辑,因为可能永远不会有停止==300。这是否也会阻止页面以超过300px的速度滚动?我明白了。但我仍然希望能够在下面进一步滚动。有办法获得滚动增量值吗?@godfrzero这肯定会阻止它滚动超过300px。@Mark S请参阅