2016-09-29 110 views
0

我有一个可滚动的div。向下滚动,然后将div封装到另一个div中会导致滚动位置重置为顶部。关于如何保持滚动位置的任何想法?Div在另一个div中滚动时顶部滚动

HTML:

<div class="box"><p>Lorem ipsum...</p></div> 
<button onclick="wrapme()">wrap me!</button> 

JS:

function wrapme(){ 
    $(document.body).wrapInner($("<div>", { class: "wrapper" })); 
} 

CSS:

.box { 
    width: 400px; 
    height: 200px; 
    overflow: auto; 
    border: 1px solid #000; 
} 

.wrapper { 
    border: 1px solid blue; 
} 

的jsfiddle:https://jsfiddle.net/gyd3r70k/5/

+0

你在哪里包括JS在您的网站? – Simplicity

+0

你的小提琴在你的文章中并不代表你的代码,它也缺少JQuery依赖关系,并且在点击你的按钮时抛出一个JS错误......修复这个问题,也许我们可以帮助你。 –

+0

抱歉,更改未保存。我已经更新了小提琴。 JS包含在头部。 – Ricardo

回答

0

您必须监控并保存文本 “scrollTop的”。
试试这个:http://codepen.io/g1un/pen/rrzAVk?editors=1111

function wrapme(){ 
    var top = $('.box').scrollTop(); 
    $(document.body).wrapInner($("<div>", { class: "wrapper" })); 
    $('.box').scrollTop(top); 
} 
+0

谢谢@ g1un,我知道,但我想知道是否有另一种方法来做这件事,而不检查元素。我很好奇这件事情。如果向元素添加父项的唯一方法是克隆它,为什么参考被保留下来? – Ricardo

+0

@Ricardo我不明白。你提到什么参考? – g1un

+0

如果保存对元素的引用(示例中的框),然后将其包装在div内,则引用不会更改。或者是相同的jQuery元素,但是一个新的DOM元素? – Ricardo