【问题标题】:why this document.ready fires not on time [duplicate]为什么这个 document.ready 没有按时触发 [重复]
【发布时间】:2012-12-19 19:17:47
【问题描述】:

可能重复:
window.onload vs document.ready jquery

我遇到了这个问题:我在页面上有一张不是那么大的图片。我有一个 js 函数,它根据内容的高度和窗口的大小动态设置左侧边栏的高度。所以如果我调整页面大小,侧边栏也会动态调整大小。但是现在,侧边栏的高度设置得很早,最终设置不正确。该设置将发生在 ```document.ready`` 函数中,该函数应该在所有 DOM 准备好(包括图像)后触发,对吗?

这是我的页面,请在 chrome 中打开,您会更清楚地看到问题。 http://www.stahlbaron.de/standort/

这是我动态设置侧边栏的 js 函数。

<script type="text/javascript">
   var calculateSize = function () {
   var winh = document.body.clientHeight;
   var footer = document.getElementById('footer').offsetHeight;
   document.getElementById('sidebar').style.height = winh - 5/2*footer + 'px';
   document.getElementById('sidebar').style.marginBottom = footer + 'px';
}
$(document).ready(function(){
   calculateSize();
   $(window).resize(calculateSize);
});

感谢您的意见和时间!

【问题讨论】:

  • 重新投票 - 答案可能相同,但问题不同。

标签: javascript html image document-ready


【解决方案1】:

您应该使用$(window).on('load', ...) 而不是$(document).ready

前者等待图像(和所有其他内容)加载,而后者只等待代表 HTML 源代码中元素的 DOM 树被创建。

由于您希望在调整大小时调用相同的函数,您可以结合事件注册:

$(window).on('load resize', calculateSize);

【讨论】:

  • 哦,谢谢老兄,不知道
  • 就是这样。像魅力一样工作! :D
  • 我看到了你的更新,所以我不需要jquery的resize函数,如果我接受你的编辑代码,对吧?
  • @doniyor 使用.on('resize', func) 相当于调用.resize(func)
  • @Alnitak.. 好的,太好了。我得到了它。非常好的帮助!非常感谢
猜你喜欢
  • 2016-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-27
  • 1970-01-01
相关资源
最近更新 更多