滚动时:如果scrollTop()等于或达到值execute事件

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

我试过了:

$(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); } 

这是一个更新的JSFiddle链接,带有一个工作示例: http : //jsfiddle.net/bC3Cu/4/

如果你看一下javascript中可滚动区域/ div的增量单位? 它描述了如何将其设置为可以覆盖滚动增量的位置。 使用该方法,您应该能够预测用户滚动了多少单位,而不会阻止他们向下滚动页面。