一个(希望)快速提问:我正在尝试从页面中删除一个元素,然后在其中添加一个新元素。
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;
});
});
到目前为止,一切都很顺利。删除旧元素,插入新元素。但是,如果您在页面上向下滚动,它将强制您的浏览器每次都返回到顶部。想法?
答案 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在页面上找到你的位置,然后将位置重置为由高度变化调整。