2013-06-14 5 views
0

У меня есть следующий код JQuery:JQuery scrollTop() прекращает работу

$('#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

Проблема здесь:

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)?

0

Код, как представляется, определяет, следует ли перемещать элемент в зависимости от того, где находится элемент. Поэтому, когда этот элемент достигает точки, в которой он не должен двигаться, он просто перестает двигаться (в любом направлении).

Попробуйте рассчитать, следует ли переводить .selected на основе scrollTop из #staff_list.

редактировать - Попробуйте изменить

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

Для

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

Смежные вопросы