如果我理论上从 ajax 调用中获取以下 HTML:
<div class="super">
<span> Some Content </span>
</div>
并将其包装在 jquery object$data
中,div 可供我进行操作,但它尚未添加到 DOM 中,直到我通过一些操作函数调用插入它。
在链接的 css 文件中,我有super
css 类的宽度和高度设置。
有没有办法让我读取添加元素时元素的宽度和高度?
只需创建一个具有相同类的假元素,将其插入 DOM,获取样式并删除元素:
var elem = $("<div class='super'></div>"),
width = elem.appendTo('body').css('width');
elem.remove();
不,不使用 jquery,因为您只能在将 div 插入 DOM 之后从 div 获取属性。
最好的方法是使用“super”类创建隐藏元素,然后使用:
var width = $('.super').css('width');
var height = $('.super').css('height');
因此,您可以执行以下操作:
var $element = $('<div class="super"><span></span></div>').hide().appendTo("body");
var width = $element.css('width');
var height = $element.css('height');
$element.remove();
有一个熟悉的线程:Get a CSS value from external style sheet with Javascript/jQuery。
那么有几种方法可以做到这一点。如果您想读取样式表值,您需要通过 document.styleSheets 对象并在那里找到具有一个属性的样式表的选择器,代码将如下所示(您可能需要编写代码来搜索类名返回的对象):
<style>
.super {
height: 200px;
}
</style>
<script>
document.styleSheets[0].cssRules[0].style.height
</script>
或者,只需将元素添加到屏幕外某处的 DOM(例如在上边距设置为 -9000px 的容器中)/或作为空元素并使用 jquery height() 或 css() 方法获取添加元素的高度。
我所做的是在一个
<div id="sandbox" style="display:none;">
</div>
这样我就可以在不可见的情况下在 DOM 中引用它。一旦我在那里完成了操作,将它移动到我想要的任何地方。