6

我正在动态创建DOM元素(更具体地说,使用jQuery创建一个DIV,其中包含一些带有css“width:auto”的文本,并在页面OnLoad事件中使用“font-face”字体)但发现宽度div在我创建它并将其添加到 DOM 树后立即不是预期的大小(特别是宽度错误) 。我需要知道元素的宽度/高度,因为我将对其进行一些动态布局。

作为一种解决方法,我在创建元素后使用以下代码:

设置超时(完成布局,100)

通过使用这个额外的超时延迟我的布局的完成,一切正常,所有元素大小都完全符合预期(在 Ubuntu Linux 上的最新 Chrome 中)

但是,这种 klugey 计时器延迟冒犯了我的敏感性,并且显然是不安全的……有没有办法通过特定的命令强制进行精确的尺寸计算?或者,是否有一个我可以注册的事件,只有在所有 DOM 元素都正确调整大小后才会触发,在创建新的动态元素之后?(我正在描绘类似 IMG onload 事件,它允许您在加载图像后找出图像的正确尺寸)

tl;dr:是否可以保证新创建的 DOM 对象的宽度何时准确?

谢谢你的帮助!

4

2 回答 2

3

您如何尝试获得宽度?.css(“宽度”)或 .width(),

您应该使用 .width(),因为 .css("width') 不会返回除 auto 之外的任何内容(如果在某些样式中未指定宽度)

$("#foo").width();

即使在立即附加之后,它也应该给出宽度。

于 2011-01-08T21:29:57.543 回答
0

您可以通过获取添加新 div 的元素的宽度来获取宽度。由于新 div 的宽度设置为 auto,它们应该是相同的。

然而,这不适用于高度。

于 2011-01-08T21:15:34.360 回答