我有一些window.onscroll
事件
$(window).scroll(function(e){
//My Stuff
});
但在我的代码中,我将动画滚动调用到某些地方
$('html, body').stop().animate({
scrollTop:555
}, 1000);
所以我如何检测页面是由用户滚动还是由我的代码调用。我的当前解决方案在我的代码中调用animate
之前放了一个标志,然后清除它,但它不是一个聪明的解决方案。我还了解了有关检测e.which
或e.originalEvent
的内容,但它不起作用。我认为你的专家在这里有一个很好的解决方案。
答案 0 :(得分:18)
$('#scroller').scroll(function(e) {
if (e.originalEvent) {
// scroll happen manual scroll
console.log('scroll happen manual scroll');
} else {
// scroll happen by call
console.log('scroll happen by call');
}
});
$('#scroller').scroll(); // just a initial call
当您通过电话滚动时,e.originalEvent
将会undefined
,但在手动滚动时会显示scroll
个对象。
<强> DEMO 强>
答案 1 :(得分:3)
我已经重新提出了这个问题,得到了2个有用的答案 我会把这个问题链接到其他能找到这个帖子的人。