我有一个简单的“向上”和“向下”按钮,像这样:
var toppos = $(window).scrollTop();
if (toppos > 600) {
$('.upBtn').addClass('up');
}
$(window).scroll(function(){
if ($(this).scrollTop() > 600) {
$('.upBtn').addClass('up');
} else {
$('.upBtn').removeClass('up');
}
});
$('.upBtn').click(function(){
$('html, body').animate({scrollTop : 600}, 800, 'easeInOutCubic');
});
$('.upBtn.up').click(function(){
$('html, body').animate({scrollTop : 0}, 800, 'easeInOutCubic');
});
然而,这两个函数中只有一个可以工作。如果我的scrollTop〉600,按钮只会触发带有.up的那个-不管类是否被删除。我很困惑。
1条答案
按热度按时间erhoui1w1#
你的代码有两个主要问题。首先,当点击发生时,两个
click
处理程序都会触发,导致竞争条件。附加一个单击事件处理程序,根据元素是否具有up
类来移动滚动位置。其次,您将
scrollTop
equal设置为600
,因此> 600
检查永远不会命中。您需要使用>= 600
。