使用 jQuery 的scroll()
功能,您可以检测任何滚动事件,无论它是由用户(即鼠标滚动、拖动滚动条)还是 DOM 引擎(添加或删除元素)创建的。如何区分 DOM 引擎触发的滚动事件。
这个 jsfiddle清楚地表明了我的意思。
使用 jQuery 的scroll()
功能,您可以检测任何滚动事件,无论它是由用户(即鼠标滚动、拖动滚动条)还是 DOM 引擎(添加或删除元素)创建的。如何区分 DOM 引擎触发的滚动事件。
这个 jsfiddle清楚地表明了我的意思。
有很多方法可以处理这个问题,但我不知道有哪一种是非常正式的。
一种简单的方法是在以编程方式启动滚动(例如设置类)时设置一个切换,并在完成后将其删除。我已经分叉了你的小提琴来展示它是如何工作的。
$("#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 特殊事件可能是最有趣的,但我概述的解决方案可能是最简单的。