我需要在第一次 .scrollTop()
更改时运行一个函数,然后不再运行。我尝试了一些方法,包括以下内容,但没有成功:
var view = $('#workspace');
view.bind("scroll resize", function() {
doThisEveryScroll();
if(view.scrollTop() == 3) {
doThisOnFirstScroll();
}
});
由于多种原因,这是错误的,但我不确定如何以其他方式解决这个问题。
- 仅当用户碰巧点击
.scrollTop() == 3
时才会运行,而使用滚轮时情况并非总是如此。 .scrollTop() == 3
可能多次为 true。
最佳答案
使用 .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
如果用户位于 100px
的 20px
范围内,则返回 true
。
关于jquery - 在第一次滚动时运行函数,然后不再运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12645428/