jQuery可以获得未绘制的动态元素的大小

我的意思是如果我用jQuery和DOM创建一个元素

var MainHolder = $(document.createElement("div")).addClass("box"); 

如果我是在没有在窗口中绘制元素的情况下调用MainHolder.width()那么它是切割器并确定它从.box CSS类获得宽度,或者它只是返回0,因为它没有被绘制所以它不能搞定了吗?

你可以绘制元素,获取宽度,并取消它:

 var MainHolder = $(document.createElement("div")).addClass("box").css({ position: "absolute", left: -9999 }).appendTo("body"); var width = MainHolder.width(); MainHolder.css({ position: "static", left: "auto" }).detach(); 

使用jQuery .width()您只能获得HTML文档中元素的宽度。

在下面的示例中,我将CSS中的宽度设置为200px

没有附加到HTML正文的示例 – 返回0

附加到HTML正文的示例 – 返回200

我相信这样做的主要原因是当你有.container .box.container2 .box等规则时,将box应用于元素并查找.box规则不起作用。 jQuery需要知道这个元素在你的文档中的位置,以了解它的宽度。

Jquery无法获取未绘制元素的宽度。

我之前做的是将元素的上边距设置为-1000,将位置设置为绝对,获得宽度和高度,然后将上边距设置为右边。

在我看来,为了这个目的, $.hide()比CSS定位更好。 left: -9999的元素left: -9999仍然可见,具体取决于其他CSS样式。

 $('
').addClass('box').hide().appendTo('body').width()

的jsfiddle