Javascript 如何在$(窗口)中滚动一次。scroll()还有另一个滚动命令
我有一个垂直的照片查看器 我需要一个滚动效果,当鼠标滚轮按下时,页面高度为一次 所以我有以下代码Javascript 如何在$(窗口)中滚动一次。scroll()还有另一个滚动命令,javascript,jquery,html,Javascript,Jquery,Html,我有一个垂直的照片查看器 我需要一个滚动效果,当鼠标滚轮按下时,页面高度为一次 所以我有以下代码 $(document).ready(function() { $(window).scroll(function () { var H = $(window).height(); var st = $(this).scrollTop(); $("html, body").animate({ scrollTop:
$(document).ready(function() {
$(window).scroll(function () {
var H = $(window).height();
var st = $(this).scrollTop();
$("html, body").animate({ scrollTop: H + st }, 500, function () {
console.log("finish scroll");
});
});
});
但当我滚动一次时,它会一次又一次地重复,直到滚动到底部
我怎样才能解决这个问题
提前感谢。问题是动画也会制作滚动事件。所以你有一个滚动循环。 要解决这个问题,可以添加一个标志
这不是解决问题的最佳方法,但您可以这样做=>我使用了一个计数器和一个计时器,以便计数器在滚动完成后等待半秒钟
})) 您可以尝试使用一个计数器,在scroll事件中增加它,但仅当计数器==1时才进行自定义滚动。在动画回调中,您将重置它。看一看jQuery结果与之前一样@@“它几乎完美,但我不知道为什么“完成滚动”将在一个滚动中切换两次?这是我的测试页面=>提前感谢。
$(document).ready(function () {
var H = $(window).height(),
go = true;
console.log(H);
//just for visual, set the height of boxes to be same as window height
//to check it is all working
$('.box').css('height', H + "px");
function scroller() {
$("html, body").animate({
scrollTop: '+=' + H
}, 400, function () {
console.log("finished");
setTimeout(function () {
go = true;
}, 400);
});
}
$(document).on('scroll', function (e) {
e.preventDefault();
if (go) {
go = false;
scroller();
}
});