2011-05-04 62 views
1

A(希望)快速的問題:我想從頁面中移除一個元素,然後添加一個新的元素早在它的位置。卸下,然後將項目div的力量頁面視圖返回頁首

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

值得注意的是,該圖片插入頁面頂部。頁面完全可能滾動回到元素,而不僅僅是頂部。 – 2011-05-04 14:55:05

+0

什麼驅動這個功能?這是否是DOM中的事件調用的函數 – BradBrening 2011-05-04 14:55:43

+0

您可以發佈傳遞的HTML,還是將所有內容放在JSFiddle上? – pixelbobby 2011-05-04 14:57:23

回答

2

你可以嘗試使用fadeTo()代替。見this blog entry

+0

這工作得很好,是迄今爲止最簡單的解決方案。謝謝! – 2011-05-04 15:16:23

2

我相信這是因爲瀏覽器不再知道該頁面的高度,它的測量它的開頭,後重新測量,但不知道它會持續多久,直到它呈現的新元素。

也會發生這種情況,例如關於jQuery UI的標籤,不同高度tabgroups之間切換時。

簡而言之,你想要發生什麼?瀏覽器不是嚮導:)

+0

用於嚮導比較的+1 ... – pixelbobby 2011-05-04 14:58:20

+0

因此,假設我的圖像尺寸完全相同,我可以將它們包裝在一個大小合適的div中,並且可能會處理它。 – 2011-05-04 14:58:21

+0

這樣的聲音應該可以工作。 – pixelbobby 2011-05-04 14:59:35

0

什麼是#品牌的CSS?你的身體元素被推動,它回到你如何設置其餘的div的位置。

最壞的情況下,你需要添加一個jQuery FUNC更新任何被甩出元素的頂部位置(基於新的div的高度)。

或者你可以重寫你的CSS,並確保你保持元素爲相對位置。

0

如果您#branding元件將保持相同的高度,把它包在外層<div id="brandingBox" style="height:50px; display:block;">...your stuff...</div>而這個問題應該消失。如果你想要改變#branding元素的高度,那麼垂直滾動將最終重置,如果這種情況你可以使用javascript在執行所顯示的jquery腳本之前找到你在頁面上的位置,然後將位置重置爲由高度變化調整。

相關問題