jQuery scrollTop()停止工作

时间:2013-06-14 18:53:57

标签: jquery scroll

我有以下jQuery代码:

$('#staff_list').scroll(function(){
    var dif = scrollPrev - $('#staff_list').scrollTop();
    scrollPrev = $('#staff_list').scrollTop();
    var pos = parseInt($('.selected').css('margin-top')) + dif;
    var limit = $('.selected').position().top + parseInt($('.selected').css('margin-top'));

    if( limit < 474 ) {
        $('.selected').css('margin-top',pos + 'px');
    } 

});

代码是为了确保$('.selected')在滚动列表时随$('#staff_list')移动。但是,我想限制$('.selected')移动多少并保持在列表底部的边界。

一切正常,除非我达到最低限度,$('.selected')停止移动(应该如此),但随后完全停止!因此,即使我向上滚动,它也不再移动。好像什么时候达到极限,无论我做什么,它都永远留在那里!

什么可能导致这种意外行为?

2 个答案:

答案 0 :(得分:0)

代码似乎决定是否根据元素的位置移动元素。因此,一旦该元素到达不应该移动的点,它就会停止移动(任一方向)。

尝试根据.selected的{​​{1}}计算scrollTop是否应该移动。

编辑 - 尝试更改

#staff_list

var limit = $('.selected').position().top + parseInt($('.selected').css('margin-top'));

答案 1 :(得分:0)

问题在于:

var limit = $('.selected').position().top + parseInt($('.selected').css('margin-top'));

if( limit < 474 ) {
    $('.selected').css('margin-top',pos + 'px');
} 

limit大于474后,您永远不会改变位置,因此limit永远不会少于474.也许您的意思是if(pos < limit)