我遇到James Padolsey's custom events问题:scrollstart
和scrolltop
当我使用鼠标滚轮滚动一个“缺口”或者我点击远离其当前位置或高于其当前位置的滚动条时,会导致大量突然滚动,我得到scrollTop()
的{{1}}值{ {1}}和scrollstart
- 我无法分辨滚动的位置或滚动的方向。 jsFiddle available here(注意:如果您的分辨率非常高,则必须在HTML中添加更多文本,以便在结果窗口中显示滚动条)。
HTML:
scrolltop
CSS:
<html>
<body>
<div id="scrollable">
<!-- insert lots of text here -->
</div>
</body>
</html>
JavaScript的:
#scrollable {width: 120px;}
有关如何检索var before = 0;
$(window).bind('scrollstart', function() {
before = $(window).scrollTop();
});
$(window).bind('scrollstop', function() {
alert('before: ' + before + "\nafter: " + $(window).scrollTop())
});
事件的真scrollTop()
值的任何想法?我想是修改插件是一个选项,所以欢迎所有想法。
答案 0 :(得分:1)
我不建议在滚动开始时记录before
值,而是建议在另一个事件中执行此操作,例如mousemove()
答案 1 :(得分:0)
也许我误解了你的问题(我没有使用过该插件),但我认为你不需要使用该插件的每一部分。如果您只想知道ScrollTop的前一个和当前值及其方向,请看一下:
var currentScrollTop, temporalScroll = 0;
$(window).scroll(function(){
currentScrollTop = $(this).scrollTop();
console.log('Previous value: ' + temporalScroll)
if (currentScrollTop > temporalScroll) {
console.log('scroll down')
console.log('Current value: ' + currentScrollTop)
}
else {
console.log('scroll up');
console.log('Current value: ' + currentScrollTop)
}
temporalScroll = currentScrollTop;
});
为了添加计时功能,您只能使用该插件的那一部分(或者简单地说,在滚动时启动setTimeout以记录更大的更改)。