0

上下文:我有一个 ajax 请求,它返回带有 html 键的数据结构。

我想用 jQuery 对象包装这些数据,以便能够使用宽度/高度等 API,并在将数据添加到 DOM 之前对其进行修改。

> $('<div width="220" height="200"></div>').width()
0

那么我该怎么做才能获得 220 然后对其进行修改呢?

我正在使用 jquery 1.7.2

编辑:

我不是 90 年代的人,因为我在示例中使用了错误的标签。我需要更改 iframe 的宽度和高度以进行响应:

> $('<iframe width="220" height="200"></iframe>').width()
0
4

3 回答 3

2

元素在添加到 DOM 之前没有宽度。

一个解决方案,如果你真的不需要它在 DOM 中,是添加它然后分离它:

var d = $('<div width="220" height="200"></div>');
d.appendTo(document.body);
var w = d.width();
d.detach();

由于在脚本结束其任务之前不会重绘屏幕,因此用户不会看到此操作。

但请注意,如果没有不同的风格,这不会给你 220。你可能想要这个:

$('<div style="width:220px;height:200px;"></div>');

示范

于 2012-12-30T15:10:17.280 回答
1
  1. 你一定是 90 后的,因为谁使用widthheight属性在 a 上div
  2. “在将其添加到 DOM 之前”没有宽度。

3.

$('<div width="220" height="200"></div>').attr('width')
于 2012-12-30T15:11:59.120 回答
0

使用css

$('<div></div>').css({ 'width': '220px', 'height': '200px'});

这将设置宽度和高度。既然你在设置它,那么之后真的不需要获取宽度,对吧?但如果需要,您可以使用width().

编辑: 也许我误解了 - 问题不太清楚。如果你想获得一个元素的宽度,那么就width可以了,但是如上所述,需要先将元素添加到 DOM 中。

于 2012-12-30T15:11:22.453 回答