Jquery 滚动行为让我困惑

Jquery 滚动行为让我困惑,jquery,scroll,Jquery,Scroll,我有一些溢出隐藏div。在它里面有li元素,我尝试将div滚动到6个元素的滚动顶部(带有按钮) 但是这种行为让我困惑。 单击一次,滚动到元素的中间,下一次单击到实际位置,它不会滚动到末尾。 谁能帮帮我吗 ps对不起我的学校英语:)我认为问题在于您使用的是offset(),它检索元素相对于页面的当前位置-但由于您移动这些元素,偏移量会发生变化 尝试以下解决方案: $(document).ready(function() { var i = 0; var offset = $("a

我有一些溢出隐藏div。在它里面有li元素,我尝试将div滚动到6个元素的滚动顶部(带有按钮)

但是这种行为让我困惑。 单击一次,滚动到元素的中间,下一次单击到实际位置,它不会滚动到末尾。 谁能帮帮我吗


ps对不起我的学校英语:)

我认为问题在于您使用的是
offset()
,它检索元素相对于页面的当前位置-但由于您移动这些元素,偏移量会发生变化

尝试以下解决方案:

$(document).ready(function() {
    var i = 0;
    var offset = $("a").eq(6).offset().top;

    var scrollList = function() {
        $('#thumb_keeper').animate({
            scrollTop: offset * i
        }, 500);
    };

    $('.scroll_down').click(function () {
        i++;
        scrollList();
    });

    $('.scroll_up').click(function () {
        i--;
        scrollList();
    });    
});    

您需要进行一些其他更改,以检查是否可以进一步向下滚动,否则
i
不能递增。向上滚动也是如此。

非常感谢。是的,我会测试这个位置。但是srollposition已经不是li的顶部了。好的,1)从
i=0开始
2)您需要将
偏移量
var减少容器的垂直偏移量(#thumb\u keeper),例如
var offset=$('a:eq(6)).offset().top-$('thumb\u keeper').offset().top3)即使如此,如果
  • 之间的所有填充/边距相同,这也只能起到很小的作用。