1

使用 jQuery 的scroll()功能,您可以检测任何滚动事件,无论它是由用户(即鼠标滚动、拖动滚动条)还是 DOM 引擎(添加或删除元素)创建的。如何区分 DOM 引擎触发的滚动事件。

这个 jsfiddle清楚地表明了我的意思。

4

1 回答 1

0

有很多方法可以处理这个问题,但我不知道有哪一种是非常正式的。

一种简单的方法是在以编程方式启动滚动(例如设置类)时设置一个切换,并在完成后将其删除。我已经分叉了你的小提琴来展示它是如何工作的。

$("#scrollable")
    .addClass('programatically-scrolling')
    .scrollTo({
        top: $("#scrollable").prop("scrollHeight") - $("#scrollable").innerHeight(),
        left: 0
    }, 1000, {
        axis: 'y',

        // Add a function to remove the toggle when the animation is complete
        onAfter: function () {
            $(this).removeClass('programatically-scrolling');
        }
    });

$("#scrollable").scroll(function (event) {

    // This will be true when your $.scrollTo animation is going
    // and false when you trigger the scroll with your mouse
    console.log($(this).hasClass('programatically-scrolling'));
});

还有其他方法可以解决这个问题,其他人也问过同样的问题。制作一个jQuery 特殊事件可能是最有趣的,但我概述的解决方案可能是最简单的。

于 2013-04-01T16:24:05.170 回答