为啥jQuery为div的高度返回null?

Posted

技术标签:

【中文标题】为啥jQuery为div的高度返回null?【英文标题】:Why does jQuery return null for the height of the div?为什么jQuery为div的高度返回null? 【发布时间】:2011-04-10 11:55:44 【问题描述】:
$(document).ready(function()

  function getDocumentHeight()
  
     // What's the page height?
     var height = $('#mainbody').height();
     alert(height);
   ...
 getDocumentHeight();  

jQuery 不断提醒null 我的#mainbody div 的高度。我不明白为什么,至少应该是500px 左右。

【问题讨论】:

你确定 存在吗? 你没有id="#mainbody",有#吗? @Nick:心理调试+1。 @Tomalak +1 表示“心理调试”这一短语 @Marko - 短语表扬 +1 【参考方案1】:

如果内容是动态加载的,元素可能还没有高度。尝试将此代码移动到页面底部,直接在上方,看看是否可以解决。

更新: 尝试将您的代码放入

$(window).load(function() 
  var height = $('#mainbody').height();
  alert(height);
);

在你之外

$(document).ready();

【讨论】:

我有这个问题,但是我的代码在 DOM 准备好后执行。奇怪。【参考方案2】:

如果您使用模板作为标记,例如使用 angular 或 ember,请使用 script 标签并从模板调用脚本。

<script type="text/javascript" src="/js/script.js"></script>

【讨论】:

【参考方案3】:

100 毫秒延迟对我来说效果很好。毫不拖延地不工作。

setTimeout(function()
    var imgWidth = $('#id').width();
    var imgHeight = $('#id').height();
    console.log(imgWidth);
    console.log(imgHeight);
, 100);

【讨论】:

以上是关于为啥jQuery为div的高度返回null?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery height() 返回错误值

JQuery 移动面板小部件 - 打开可折叠列表会导致一旦展开超出页面高度,就会跳转到页面 div 的底部。为啥?

为啥无法获取到div的高度

jQuery

$(document).ready() 内的 div 高度为零

Jq 为啥获取不到隐藏DIV 的宽度?