我需要在第一次.scrollTop()
更改时运行一个函数,然后再也不会。我尝试过以下几项,但没有运气:
var view = $('#workspace');
view.bind("scroll resize", function() {
doThisEveryScroll();
if(view.scrollTop() == 3) {
doThisOnFirstScroll();
}
});
出于多种原因这是错误的,但我不知道如何以任何其他方式处理这个问题。
.scrollTop() == 3
时才会运行此功能。滚动轮并非如此。.scrollTop() == 3
可能多次出现。答案 0 :(得分:7)
使用.one()
设置一个事件处理程序,一旦调用它就会自行分离:
$('#workspace').on('scroll resize', function() {
doThisEveryScroll();
}).one('scroll resize', function() {
if (Math.abs(100 - $(this).scrollTop()) < 20) {
doThisOnFirstScroll();
}
});
您还可以通过计算目标距离来为目标滚动位置提供误差范围:
Math.abs(100 - $(this).scrollTop()) < 20
如果用户位于true
的{{1}}范围内,则会返回20px
。