我的意思是如果我用 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
:
我认为主要原因是当您有诸如or之类box
的规则时,应用到元素并查找.box
规则不起作用。jQuery 需要知道该元素在您的文档中的位置,以了解它的宽度。.container .box
.container2 .box
Jquery 无法获取未绘制元素的宽度。
我之前所做的是将元素的上边距设置为 -1000 并将位置设置为绝对值,获取宽度和高度,然后将上边距设置为正确。
在我看来,$.hide()
这比 CSS 定位要好。根据其他 CSS 样式,带有 的元素left: -9999
仍然可见。
$('<div></div>').addClass('box').hide().appendTo('body').width()