繁体   English   中英

满足条件后如何重新运行事件功能?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM