2014-02-19 4 views
0

Пожалуйста, обратите внимание на следующую скрипке:JQuery .wrapAll() сбрасывает свитку вложенных элементов

http://jsfiddle.net/ardoramor/UzJqd/

Когда скрипичные нагрузки, DIV с классом .wrapper прокручиваются 200px вниз. Это включает в себя все вложенные .wrapper. DIVs as well. After 5 seconds, trigger .wrapAll() will be executed on the children of .container . The content of the .container class will be wrapped by a new DIV with .wrapAll class. You will notice that the red and blue areas jump and you can now see the topand `элементы. Это происходит из-за упаковки.

ПРИМЕЧАНИЕ: Это очень упрощенный пример. В реальности я теперь буду знать содержимое .wrapper DIV. Кроме того, может быть несколько таких элементов со свитком. Мой вопрос заключается в том, могут ли дети контейнера быть обернуты без сброса их прокрутки.

ответ

0

Просто поместите код прокрутки после функции wrapAll

$('.wrapper').scrollTop(200); 
+0

Это не будет работать, если я не знаю, содержимое '.wrapper'. Я должен был уточнить, что это упрощенный пример. – Vadym

+0

Используйте переменную для получения значения scrollTop, а затем установите ее после помещения оболочки –

2

Сохранить scrollTop до упаковки и восстановления, если после того, как упаковка.

var st = $('.wrapper').scrollTop(); 
$('.container').children().wrapAll('<div class="wrapAll">'); 
$('.wrapper').scrollTop(st); 

Обновлено скрипку: http://jsfiddle.net/JR6y8/1/

0

Попробуйте это:

setTimeout(function() { 
     $('.container').children().wrapAll('<div class="wrapAll">').scrollTop($('.container').height()); 
    }, 5000); 
}); 
Смежные вопросы