Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery scrollTop保持触发功能_Jquery_Css_Jquery Ui - Fatal编程技术网

jQuery scrollTop保持触发功能

jQuery scrollTop保持触发功能,jquery,css,jquery-ui,Jquery,Css,Jquery Ui,我正在使用jQuery使标题div在滚动过去时保持粘性(位置:fixed) 下面是我使用的代码,非常有效: $(window).scroll(function() { var y = $(this).scrollTop(); if (y >= 200) { $('.top').addClass('sticky'); } else { $('.top').removeClass('sticky'); } }); 然而

我正在使用jQuery使标题div在滚动过去时保持粘性(位置:fixed)

下面是我使用的代码,非常有效:

    $(window).scroll(function() {
    var y = $(this).scrollTop();

    if (y >= 200) {
        $('.top').addClass('sticky');
    } else {
        $('.top').removeClass('sticky');
    }
});
然而,我发现用户体验有点欠缺。我开始玩弄jQuery UI——我在网站的其他地方使用它,所以它已经包含在内了——下面是我遇到问题的地方:

$(window).scroll(function() {
    var y = $(this).scrollTop();

    if (y >= 200) {
        $('.top').toggle('fade', 200, function() {
            $('.top').addClass('sticky', function() {
                $('.top').toggle('fade', 200);
            });
        });
    } else {
        $('.top').removeClass('sticky');
    }
});
我想要的行为是div淡出,变粘,然后淡入

它触发正常,但它只是不断地来回闪烁。反复切换淡入淡出

有人能告诉我如何达到我的预期行为吗?我只想让它在滚动过去后注册,而它似乎一直在听滚动位置


谢谢。

我想现在发生的是动画已经排队并一直切换状态,因为它在滚动时不断被触发。最终,动画将在滚动距离确定的持续时间内停止

因此,您需要中断动画

var y = $(this).scrollTop();

if (y >= 200) {        
    $('.top')
        .stop(true, true)
        .fadeOut(200).delay(200)
        .fadeIn(200).addClass('sticky');
} else {
    $('.top').removeClass('sticky');
}
jQuery

这里有一个