Показать сообщение отдельно
  #4 (permalink)  
Старый 26.01.2013, 00:50
Профессор
Отправить личное сообщение для Hoshinokoe Посмотреть профиль Найти все сообщения от Hoshinokoe
 
Регистрация: 08.01.2012
Сообщений: 253

wursta,

position().top - возвращает позицию начиная с видимой части блока.
scrollTop() - позиция прокрутки в блоке (расчитывается исходя из размеров всего блока, не только видимой его части).

Поэтому два варианта:
1) костыль - перед тем как взять top, делаем scrollTop(0)
$('.button').click(function(){
  test_index = 7;//пускай для примера он будет статичный
  $('.hidden_div').scrollTop(0); //теперь top будет равен высоте всех элементов до него
  $('.hidden_div').scrollTop(parseInt($('.hidden_div .elements').eq(test_index).position().top));
});

2) правильный - считать высоту всех элементов до необходимого
$('.button').click(function(){
  test_index = 7;//пускай для примера он будет статичный

  var el = $('.hidden_div .elements').eq(test_index);
  var scrollTop = el.height();
  $.each(el.prevAll(), function (index, elem) { scrollTop += $(elem).height(); });
  $('.hidden_div').scrollTop(scrollTop);
});

Последний раз редактировалось Hoshinokoe, 26.01.2013 в 00:57.
Ответить с цитированием