2012-04-14 117 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;