jQuery width()为动态创建的span元素返回0?

时间:2010-03-26 17:05:38

标签: jquery width

我正在尝试确定字符串的宽度。我正在使用以下代码,但它总是返回0.似乎是因为span元素已创建且尚未出现在页面正文中,jQuery width()返回0.是否有一种方法可以让我得到文本的宽度,而不是在页面中创建虚拟HTML代码?

谢谢:)

$('<span>test</span>').width(); // width = 0
$('span.width').width(); // returns a width value

<body><span class="width">test</span></body>

5 个答案:

答案 0 :(得分:8)

元素必须存在于DOM中才能计算宽度。如果您需要在用户可以看到该元素之前进行计算,请在将其放入DOM之前尝试将其隐藏。

答案 1 :(得分:1)

您可以尝试在获取大小之前将带有css属性visibility: hidden的控件添加到页面,因此无需使元素可见。

没有添加控件就无法获得宽度,因为很多不同的东西可能会干扰宽度。

答案 2 :(得分:0)

我到达这里是因为为什么要使用Jasmine进行测试并且需要计算动态创建的jQuery对象的宽度。

将它们添加到DOM进行测试的解决方案是: http://testdrivenwebsites.com/2010/07/29/html-fixtures-in-jasmine-using-jasmine-jquery/

答案 3 :(得分:0)

不能设置内联元素的宽度,因此您可能总是得到0,null或未定义,或者输出的某些变化根本无法帮助您。

答案 4 :(得分:0)

如果使用内联CSS设置宽度,我相信width会返回正确的值。不理想,但在某些情况下可能没问题。