检测用户触发的 jquery 事件或代码调用

Detect jquery event trigger by user or call by code

本文关键字:事件 代码 调用 jquery 用户 检测      更新时间:2023-09-26

我有一些window.onscroll事件

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

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

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

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

$('#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对象。

演示

我重新问了这个问题,得到了2个有用的答案.
我将在这里为找到此线程的其他人链接该问题。

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