2

我需要根据另一个元素的高度来设置一个元素的高度。假设当该元素完成渲染时,它的高度为 490 像素。

如果我在函数 inside 的开头查询其他元素的高度$(document).ready(),它会返回 432px。

如果我在 a 中查询其他元素的高度setTimeout(function, 100),它会返回大约 475px。

如果我setTimeout提高到 150 左右,则元素完成渲染,我得到 190。但显然我不能指望这一点。

如果可能的话,我不想等待整个页面完成加载;我只想等待这个元素。

似乎该load事件应该适用于任意元素,但据我所知,这在浏览器中没有实现,或者至少在 Chrome 中没有实现。

编辑:该元素不是图像,并且(几乎可以肯定)元素内部永远不会有图像。它只是一个<div>与其他一些<div>s 和<p>s 以及其中的东西。显然,在应用 CSS 或其他东西的中间会查询高度。代码示例即将发布。

编辑 2:这是一个从我的网站被黑掉的小提琴。(请原谅可怕的标记;我还没有清理 Drupal 的输出。)不过,小提琴没有表现出我试图纠正的不良行为,因为整个片段在 Javascript 的相关部分之前被渲染是跑。

有没有办法做到这一点,还是我坚持window.onload

4

2 回答 2

2

You can do something like this:

<img src="myImage.gif" onload="loadImage()">
于 2013-04-16T16:30:22.717 回答
0

You will want to use at least $(window).load() since you need to wait on additional resources like images and CSS sheets that can affect the dimensions of elements on the page.

load() can work on images as well. You should be able to get it right without needing setTimeout.

http://api.jquery.com/load-event/ contains a notice that it doesn't work reliably for images.

于 2013-04-16T16:30:09.560 回答