2011-03-02 34 views
3

有没有一种方法可以找到Javascript中的文本宽度(使用jQuery,很高兴利用它们提供的任何功能)来隐藏元素?在Javascript中查找文本宽度

我想要一个节点图。每个节点都有文本,我希望节点的宽度可以适应文本的极限。所以我基本上在里面创建了一些隐藏的<div>。然后我使用jQuery在正确的位置上显示那些<div>的图形。提前知道正确的宽度非常重要,这样我就可以正确地构建图形。

UPDATE:只是为了澄清,我需要知道一些文字有多宽,而它的隐藏。 Blender在下面给出了一个答案,我希望有一个不那么棘手的方法?

+0

你是什么意思“宽度文本”?你的意思是字符串中有多少个字符,或者一个控件的宽度? – 2011-03-02 23:03:25

+0

有一个CSS“最大宽度”风格属性,你知道... – Pointy 2011-03-02 23:05:06

+0

(当然,它并不适用于所有浏览器。) – Pointy 2011-03-02 23:05:47

回答

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); 

必须有一个更简单的方法,虽然...

1

您可以设置div的样式为不包装white-space:nowrap(所以,文本是在一行中),然后获得每个div的宽度,如果mor e超出限制,将其设置为极限并设置样式以允许文本环绕`white-space:正常

+0

谁会downvote呢?这是一个很好的答案。 – Pointy 2011-03-03 00:00:09

+0

那么,你可以帮助改变它:D - 谢谢你。 – Meligy 2011-03-03 01:02:05

0

只是抛出一个非JQuery的答案。假设我有一个ID为myworkerdiv的工作区,我已经把我的文本放入了。

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

如果包含(clientHeight || scrollHeight),还可以查看高度。

0

您可以使用类似搅拌机的方法,但使用可见性css属性而不是显示。能见度:隐藏;保持元素的位置,但只是使其不可见。