2010-07-04 46 views
4

我有一個頁面,其中包含一個div,當頁面加載時必須通過JS調整大小。爲了做到這一點,我給它的760px「默認寬度」,然後運行下面的代碼:jQuery - 在document.ready之前運行一個函數...但不能太早

function resizeList() 
{ 
    var wlwidth,iwidth,nwidth; 
    wlwidth = document.body.clientWidth - 200 - 60; 
    iwidth = 320; 
    nwidth = Math.floor(wlwidth/iwidth) * iwidth; 
    $('#list').css('width',nwidth); 
} 

$(document).ready(function(){ 
    // if we're looking at a list, do the resize-thing, now and on window resize 
    if (window.location.pathname.toString().split('/')[1] == "list") 
    { 
     resizeList(); 
     window.onresize = resizeList; 
    } 
}); 

但是,頁面可能需要一段時間來加載作爲#list div包含大量的圖片。因此,只有在所有內容完成加載後,纔會擴展div以填充正確的寬度。我不能把它從$(document).ready函數中拿出來,否則它錯誤地說document.body是未定義的。

有沒有辦法在所有內容加載之前調整#list div的大小?

編輯
請參閱:http://www.google.com/images?q=whatever
他們已經取得了我想要做成功。該列表在頁面加載時立即被正確確定大小,然後被填充。您可以通過調整窗口大小並觀察元素的平滑移動來告訴他們通過JS來調整所有內容。可悲的是,谷歌的JS是不是世界上最容易閱讀感嘆

+0

你可以嘗試設置display:none;到#list,改變它的大小,然後通過jQuery設置di​​splay:block。我可能是錯的 - 但我認爲瀏覽器不會加載隱藏的div內的圖像。 – Marko 2010-07-04 04:57:24

+0

非常有趣的想法!我會試一試......雖然這對非JS用戶來說會非常糟糕,不可撤銷地隱藏#list div – Mala 2010-07-04 05:01:52

回答

4

它,只要它可以運行,$(document).ready是當DOM完成渲染髮生的事件。

您應該在onload上添加一個加載屏幕,然後在重新調整大小後可能會淡出它。

+0

如果瀏覽器能夠很好地理解部分DOM並顯示它,我會認爲它應該可以報告窗口的寬度...我當然可能錯了 – Mala 2010-07-04 04:59:14

+0

由於我們還沒有準備好公開曝光,因此我們在回顧過程中刪除了這個鏈接,因此我希望能夠從中獲得幫助你的評論。儘管謝謝你的建議!然而,谷歌圖片搜索似乎完成了我正在努力完成的任務,只有他們成功完成了;) – Mala 2010-07-04 05:09:54

+0

@Mala - 這是因爲列最初是靜態的,重排發生在DOM準備好之後(再次使用JS) 。也許你應該爲你的DIV使用默認寬度,當DOM準備就緒時,你可以用JS調整DIV。 – 2010-07-04 05:16:35

相關問題