删除然后将项添加到div强制页面视图返回顶部

时间:2011-05-04 14:53:02

标签: javascript jquery

一个(希望)快速提问:我正在尝试从页面中删除一个元素,然后在其中添加一个新元素。

jQuery("#branding").fadeOut("slow", function() {
    jQuery("#branding").empty();
    jQuery("#branding").append("<a class='headerimg' href='/'></a>");
    jQuery("#branding .headerimg").append(imageElement);
    jQuery("#branding").fadeIn("slow", function() {
        self.working = false;
    });
});

到目前为止,一切都很顺利。删除旧元素,插入新元素。但是,如果您在页面上向下滚动,它将强制您的浏览器每次都返回到顶部。想法?

4 个答案:

答案 0 :(得分:2)

我相信这是因为浏览器不再知道页面的高度,它在开始时测量它,之后重新测量它,但不知道它将呈现新元素之前将持续多长时间。< / p>

当在具有不同高度的选项卡组之间进行更改时,这也会发生在诸如jQuery UI选项卡之类的事情上。

简而言之,您想要发生什么?浏览器不是向导:)

答案 1 :(得分:2)

您可以尝试使用fadeTo()。请参阅this blog entry

答案 2 :(得分:0)

#branding的CSS是什么?你的身体元素被推开,它回到你如何设置其他div的定位。

最糟糕的情况是,你需要添加一个jquery func来更新被抛出的任何元素的顶部位置(基于新的divs高度)。

或者您可以重写CSS并确保将元素保持为相对位置。

答案 3 :(得分:0)

如果#branding元素保持相同的高度,请将其包裹在外部<div id="brandingBox" style="height:50px; display:block;">...your stuff...</div>中,此问题应该消失。如果你想要改变#branding元素的高度,那么垂直滚动最终会重置,如果是这种情况,你可以在执行显示的jquery脚本之前使用javascript在页面上找到你的位置,然后将位置重置为由高度变化调整。