我有以下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')
停止移动(应该如此),但随后完全停止!因此,即使我向上滚动,它也不再移动。好像什么时候达到极限,无论我做什么,它都永远留在那里!
什么可能导致这种意外行为?
答案 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)
?