如何在满足条件后重新运行事件函数?

时间:2017-02-21 23:57:16

标签: javascript jquery css

我正在尝试以较慢的速度滚动侧边栏,直到达到某个点。然后,当用户到达该设定点时,侧边栏应该停止滚动。这是我的jQuery代码:

void func(int n, void *buf);

int main()
{
    void *buf;
    func(10,buf);
    for(int i=0;i<10;i++){
        printf("%d\n", ((char*)buf)[i]);
    }
    printf("in main, after func: %p\n",buf);
}

void func(int n, void *buf)
{
    (char*)buf;
    char my_array[n];

    for(int i=0;i<n;i++){
        my_array[i]=i;
    }

    buf = my_array;
    printf("in func: %p\n",buf);
}

在ELSE情况下,一切都很好。问题是当满足IF条件时,即使我向上滚动并再次满足ELSE条件,侧边栏仍然会停留在最低点。

如果有人能帮我理解我做错了什么,并且有更聪明的方法来实现同样的目标,我将不胜感激。

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果有人对此感兴趣,我是如何解决的:

$(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大几个像素,因此无法满足条件。