如何删除顶部div而不会导致底部div跳起来?

时间:2014-02-09 04:07:53

标签: javascript jquery html

我遇到的情况是,我需要删除文档中最顶层的div,而不会从用户的角度进行任何更改。基本上,我需要从:

---------文件顶部
DIV1
DIV2
DIV3
---------窗口顶部
DIV4
DIV5
---------窗口底部
DIV6
DIV7
---------文件底部

为:

---------文件顶部
DIV3
---------窗口顶部
DIV4
DIV5
---------窗口底部
DIV6
DIV7
---------文件底部

以不会导致用户看到div4和div5进行任何移动的方式完成此转换的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

您应该可以将文档的scrollTop设置为当前值,减去要删除的div的高度。类似的东西:

var height = $('#div-1').height() + $('#div-2').height();
$(document).scrollTop($(document).scrollTop() - height);
$('#div-1, #div-2').remove();

滚动位置的变化应该足够快,以至于用户不会注意到它。

答案 1 :(得分:1)

重编辑!

$( document ).ready(function() {
    var heightof = $('#one').height() + $('#two').height();
    $(window).scroll(function(){
        var y = $(this).scrollTop();

        if(y >= heightof)
        {
            $('#one, #two').remove();
            $(this).scrollTop('0px');
        }
    });  
});

在这里,这应该有效!

这段代码基本上是检查滚动事件,当它到达前两个div时(所以我们加上它们的高度),我们删除它们。我测试它时,我甚至没有注意到任何变化。

jsfiddle

上查看

答案 2 :(得分:0)

如果您不需要从DOM中实际删除该元素,则可以将其style.visibility属性设置为“hidden”。它将从页面中消失,但过去仍然会有一个空白区域。