0

我有以下 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')停止移动(应该如此),但随后完全停止!因此,即使我向上滚动,它也不再移动。就好像当它到达极限时,无论我做什么,它都会永远停留在那里!

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

4

2 回答 2

0

出现的代码是根据元素所在的位置来判断是否移动元素。因此,一旦该元素到达不应移动的点,它就会停止移动(任一方向)。

尝试根据of计算是否.selected应该移动。scrollTop#staff_list

编辑 - 尝试改变

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

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

于 2013-06-14T19:01:36.933 回答
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)

于 2013-06-14T19:02:08.740 回答