在Javascript中查找文本的宽度

时间:2011-03-02 23:01:24

标签: javascript jquery css text width

有没有办法在Javascript中找到文本的宽度(使用jQuery,很高兴利用它们提供的任何函数)来隐藏元素?

我想要一个节点图。每个节点都有文本内部,我希望节点的宽度可以容纳文本达到限制。所以我基本上用一些html创建隐藏的<div>。然后我使用jQuery在图表的正确位置显示那些<div>。重要的是我提前知道正确的宽度,以便我可以正确地构建图形。

更新 :为了澄清,我需要知道一些文字在被隐藏时有多宽。 Blender给出了一个答案,我希望有一个不那么棘手的方法吗?

5 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

你是什么意思?如果你的意思是<div>元素的宽度,那么有一个方便的功能可以满足你的需要。玩其中一些:

$('#foo').width();
$('#foo').innerWidth();
$('#foo').outerWidth();

至于找到隐藏元素的width,我通常会做这个肮脏的伎俩:

var zIndex = $('#foo').css('z-index');

$('#foo').css('z-index', '-10');
$('#foo').css('position', 'absolute');
$('#foo').css('display', 'block');

var fooWidth = $('#foo').width();

$('#foo').css('display', 'none');
$('#foo').css('z-index', zIndex);

但必须有一种更简单的方法......

答案 2 :(得分:1)

您可以将div的样式设置为不包裹white-space:nowrap(因此,文本在一行中)然后获取每个div的宽度,如果超过限制,则将其设置为限制并设置允许文本换行“white-space:normal

的样式

答案 3 :(得分:0)

只是在这个问题上投入非JQuery答案。假设我有一个id为myworkerdiv的工作div,我已经把我的文本放进去了。

var myDiv document.getElementById('myworkerdiv'),
width = myDiv.clientWidth || myDiv.scrollWidth;

如果包括(clientHeight || scrollHeight),你也可以找到身高。

答案 4 :(得分:0)

您可以使用类似的blender方法,但使用visibility css属性而不是display。能见度:隐藏;保持元素的放置,但只是让它不可见。