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