在关闭旧div之后计算新添加的div的新顶部偏移量

时间:2017-02-03 15:16:17

标签: javascript jquery scroll scrollview offset

enter image description here

用户可以以这种形式添加块,所以我需要将新添加的块滚动到视图中并且它正常工作但是我试图关闭像打开的旧块(块2,块3)然后滚动到(块) 4)顶部偏移但它不起作用。

添加新块后,我将关闭旧打开的块并滚动到新块。

所以我需要在关闭旧div(块2,块3)之后计算新div(块4)的新顶部偏移量,然后滚动到新偏移量。

以下代码仅在旧块保持旧状态时有效。

var curBlockOffsetTop = $(#divID).offset().top;

$('html, body').animate({
    scrollTop: curBlockOffsetTop - 40
}, 1000);

2 个答案:

答案 0 :(得分:0)

旧街区如何关闭?你的问题没有足够的细节。

听起来正如发生的那样是curBlockOffsetTop在块关闭之前读取高度,然后当滚动动画触发时它会滚动到错误的位置。尝试使用setTimeout延迟滚动的执行,直到所有内容都关闭为止。

看起来像这样:

/**closing old blocks code goes here**/

var delayInMiliseconds = 1200;

setTimeout(function(){

/**scrolling code goes here**/

}, delayInMiliseconds);

答案 1 :(得分:0)

如何滚动到最后一个块的末尾而不是滚动到新块?

我不确定你的标记是怎样的,但让我们说它是这样的:

<div class="block-1"></div>
<div class="block-2"></div>
<div class="block-3"></div>
<div class="block-4">
   New Block that was just added
</div>

<script>
   newPosish = $(".block-3").offset().top $(".block-3").height() + 40 // where block-4 should be added
   window.scrollTo(0,newPosish)
</script>