为新创建的DOM对象获取准确的维度

drc*_*ode 6 javascript jquery dom dynamic dimensions

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

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

的setTimeout(complete_layout,100)

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

然而,这个klugey计时器延迟冒犯了我的敏感性,显然是不安全的......有没有办法用特定的命令强制进行精确的尺寸计算?或者,是否有一个我可以注册的事件,只有在创建新的动态元素后,所有DOM元素的大小都正确后才会触发?(我正在想象IMG onload事件,它可以让你在加载后找出图像的正确尺寸)

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

谢谢你的帮助!

Pat*_*ans 3

你想如何获得宽度?.css("宽度"), 或 .width(),

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

$("#foo").width();
Run Code Online (Sandbox Code Playgroud)

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