2012-04-14 142 views
0

我正在創造一個網站,我需要根據其中一個孩子的偏移調整div的大小。 所以,我做這種方式:根據其內容的div大小

<script type="text/javascript"> 

     $(document).ready(function(){ 
     if($(sizer)[0].scrollHeight > 500) 
     { 
      $(maincnt).height(($(sizer)[0].scrollHeight + 300)); 
     } 
     }); 

</script> 

但是,問題是,事件沒有被觸發的Firefox。但與鉻它的作品。 有沒有一個更清晰的方法來符合div的大小?如果沒有,有沒有辦法讓它觸發Firefox?這是我的HTML代碼:

<div id="maincnt" > 
<div style="position:relative;"> 
<div id="sizer" style="position:absolute;top:12px;left:10px;width:750px;"> 
    <!-- Dynamically added things --> 
</div> 
</div> 
</div> 

編輯:我放棄了,我已經找到了另一種解決方法,其解決了我的第一個問題,而不是JQuery的一個。

回答

0

問題可能是當DOMready事件被觸發時,瀏覽器尚未計算出所有的寬度和高度。當頁面結構準備好處理時,而不是在加載css時,DOMready事件被觸發。

嘗試做這方面的工作負載情況下,當一個頁面的所有資產被加載時觸發,CSS包括:

$(window).load(function(){ 
    if($(sizer)[0].scrollHeight > 500) { 
     $(maincnt).height(($(sizer)[0].scrollHeight + 300)); 
    } 
}); 
+0

這個事件不是由firefox發起的,也不是鉻。看一下http://178.33.232.214/:問題在於它的子div內容沒有被重新設置大小(如果你有一個adblocker,那麼它就會被視爲bug)。 – 2012-04-14 15:05:09

0

問題是幾乎可以肯定的是,你」造成的重新處理DOM元素,就好像JS以ID作爲變量預先填充一樣。

嘗試$('#sizer')$('#maincnt')而不是您目前擁有的。

另外,爲什麼你總是使用絕對定位的元素?有什麼問題,只需將它設置爲:margin: 12px 0px 0px 10px; width: 750px;