2016-09-29 175 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