[英]How to re-run an event function after a condition has been met?
我正在尝试以较慢的速度滚动边栏,直到达到特定点为止。 然后,应在用户到达该设置点时停止侧栏滚动。 这是我的jQuery代码:
$(window).on("scroll", function() {
var sidebar = $('.sidebar');
var stopPoint = $('#stop-point');
var sidebarBottom = sidebar.offset().top + sidebar.height();
var stopPointBottom = stopPoint.offset().top + stopPoint.height() - 30;
if (sidebarBottom > stopPointBottom) {
$('.sidebar').css({'top' : "288px"});
}
else {
$('.sidebar').css({'top' : ($(this).scrollTop()/3)+"px"});
}
});
在ELSE条件下,一切工作正常。 问题是,当满足IF条件时,即使我向上滚动并再次满足ELSE条件,侧边栏也将停留在最低点。
如果有人可以帮助我了解我在做错什么,并且有一种更聪明的方法来实现这一目标,我将不胜感激。
提前致谢。
如果有人感兴趣,这是我的解决方法:
$(window).on("scroll", function() {
var sidebar = $('.sidebar');
var stopPoint = $('#stop-point');
var sidebarBottom = sidebar.offset().top + sidebar.height();
var stopPointBottom = stopPoint.offset().top + stopPoint.height() - 30;
$('.sidebar').css({'top' : ($(this).scrollTop()/3)+"px"});
if (($(this).scrollTop()/3) > 284 ) {
$('.sidebar').css({'top' : "284px"});
}
});
滚动回顶部时,sidebarBottom比stopPointBottom大了几个像素,因此该条件无法满足。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.