0

如果我理论上从 ajax 调用中获取以下 HTML:

<div class="super">
    <span> Some Content </span>
</div>

并将其包装在 jquery object$data中,div 可供我进行操作,但它尚未添加到 DOM 中,直到我通过一些操作函数调用插入它。

在链接的 css 文件中,我有supercss 类的宽度和高度设置。

有没有办法让我读取添加元素时元素的宽度和高度?

4

5 回答 5

3

只需创建一个具有相同类的假元素,将其插入 DOM,获取样式并删除元素:

var elem = $("<div class='super'></div>"),
    width = elem.appendTo('body').css('width');
    elem.remove();

小提琴

于 2012-08-15T22:34:47.247 回答
1

不,不使用 jquery,因为您只能在将 div 插入 DOM 之后从 div 获取属性。

于 2012-08-15T22:26:58.343 回答
1

最好的方法是使用“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

于 2012-08-15T22:32:27.643 回答
1

那么有几种方法可以做到这一点。如果您想读取样式表值,您需要通过 document.styleSheets 对象并在那里找到具有一个属性的样式表的选择器,代码将如下所示(您可能需要编写代码来搜索类名返回的对象):

<style>
        .super {
            height: 200px;
        }

    </style>
<script>
document.styleSheets[0].cssRules[0].style.height
</script>

或者,只需将元素添加到屏幕外某处的 DOM(例如在上边距设置为 -9000px 的容器中)/或作为空元素并使用 jquery height() 或 css() 方法获取添加元素的高度。

于 2012-08-15T22:41:28.207 回答
0

我所做的是在一个

<div id="sandbox" style="display:none;">

</div>

这样我就可以在不可见的情况下在 DOM 中引用它。一旦我在那里完成了操作,将它移动到我想要的任何地方。

于 2012-08-15T22:37:41.490 回答