我正在动态创建DOM元素(更具体地说,使用jQuery创建包含css“width:auto”的一些文本的DIV,并在页面OnLoad事件中使用“font-face”字体)但是找到了在创建div并将其添加到DOM树之后,div的宽度不是预期的大小(具体来说,宽度是错误的)立即。我需要知道元素的宽度/高度,因为我将在它上面做一些动态布局。
作为一种解决方法,我在创建元素后使用以下代码:
的setTimeout(complete_layout,100)
通过这个额外的超时延迟我的布局完成,一切都很完美,所有元素大小完全符合预期(在Ubuntu Linux上的最新Chrome中)
但是,这个klugey计时器延迟会冒犯我的敏感度,显然是不安全的......有没有办法用特定的命令强制进行精确的尺寸计算?或者,是否有一个我可以注册的事件,只有在创建新的动态元素后,所有DOM元素的大小都正确才会触发? (我正在想象IMG onload事件,它可以让你在加载后找出图像的正确尺寸)
tl; dr :是否可以保证新创建的DOM对象的宽度何时准确?
感谢您的帮助!
答案 0 :(得分:3)
你是如何获得宽度的? .css(“width”),或.width(),
你应该使用.width(),因为.css(“width”)不会返回除auto之外的任何内容(如果在某些样式中没有指定宽度)
$("#foo").width();
即使在追加后也应该给出宽度。
答案 1 :(得分:0)
您可以通过获取添加新div的元素的宽度来获得宽度。由于新div的宽度设置为auto,因此它们应该相同。
然而,这对高度不起作用。