2012-06-11 2 views
5

http://jsfiddle.net/cbp4N/16/Положение прокрутки, потерянное при скрытии div

Если вы показываете div. Измените положение прокрутки, а затем спрячьте и покажите ему, что положение прокрутки потеряно.

Я делаю что-то неправильно или это ошибка. Есть ли способ обойти его с помощью sm-модулей.

/Anders

Спасибо за ответы и решения. Но что, если div, который я скрываю, является внешним div, а прокручивающийся div находится внутри div, который я скрываю. Есть ли разумный способ исправить это. Becuse now I can not set/save позиция прокрутки в обратном вызове hide/show

+0

Ты демка просто работает отлично – thecodeparadox

+0

Это ожидаемое поведение, так как вы не можете установить значение прокрутки скрытого элемента. – Quantastical

+0

, который, как ожидается, вам нужно будет сохранить положение прокрутки и сбросить его на шоу –

ответ

5

Jquery в .scrollTop() хорошо работает, если вы поддерживаете позицию данных.

$('#cbxShowHide').click(function(){ 
    if(this.checked) { 
     $('#block').show('fast',function() { 
      $(this).scrollTop($(this).data('scroll')); 
     }); 
    } 
    else { 
     $('#block').data('scroll',$('#block').scrollTop()); 
     $('#block').hide('fast'); 
    } 
}); 

example

1

Это нормальное поведение, потому что при его скрытии элемент имеет наименьшие возможные переменные. Если вы хотите запомнить позицию прокрутки, вам нужно будет сохранить их самостоятельно, а затем применить положение прокрутки, показывая его.

Scroll Position of div with "overflow: auto"

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