10

我有一些window.onscroll活动

$(window).scroll(function(e){
    //My Stuff
});

但在我的代码中,我调用动画滚动到某个地方

$('html, body').stop().animate({
   scrollTop:555
}, 1000);

所以我如何检测页面是由用户滚动或由我的代码调用的。我当前的解决方案是animate在我的代码中调用之前放置一个标志然后清除它,但这不是聪明的解决方案。我也读过关于检测e.whiche.originalEvent但它不起作用。我认为您的专家在这里有一个很好的解决方案。

4

2 回答 2

19
$('#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.originalEventundefined滚动但手动滚动时它将给出scroll对象。

演示

于 2012-06-15T11:24:41.243 回答
3

我重新问了这个问题并得到了 2 个有用的答案。
我会在此处为其他会找到此线程的人链接问题。

检测是否在 jQuery 中手动触发滚动事件

于 2013-12-23T07:33:40.163 回答