13

可能看起来像一个微不足道的问题,但我在使用 jQuery 时遇到了一个问题。当我尝试获取 .ready 中元素的高度时,我总是得到零。

$(function() {
  $('#my-elem').height() // Always gives me zero.
});

如果我在高度检查周围使用 setTimeout() 延迟代码(例如 0.5 秒),那么高度会正确报告给我。我猜这是因为样式还没有机会应用?

我发现这个问题的唯一解决方案是使用间隔来轮询元素的高度,直到它变为非零,但这对我来说似乎有点过分了。有没有更好的办法?

4

1 回答 1

23

document.ready事件表明 HTML DOM 已准备好通过 Javascript 访问,但这并不意味着元素已经呈现

事实上,这就是背后的全部内容:它是一种让您无需等待页面完成加载ready即可开始操作文档的 HTML DOM的方法。可以安全地假设,您的元素尚未显示在页面上。document.ready

现在,有一个警告:如果元素还没有渲染,浏览器/Javascript怎么知道它的解析高度是多少?.height()因此可能会给出零document.ready。最好等到load而不是ready从布局中提取框尺寸。

于 2012-06-20T09:31:02.197 回答