2012-11-02 72 views
2

我有以下元素。獲取改變文本的元素的外部寬度

var e=$('<span/>', {"class":'someClass',text:'Hello'}); 

我希望得到它的外部寬度。看起來我不能僅僅使用e.outerWidth(),因爲它需要先寫入屏幕。正確?

所以,現在是真正的問題。如果文本是「Goodby」,我希望知道外部寬度,而不是使用文本「Hello」,這將如何實現?

謝謝

回答

1

您可以將元素添加到文檔,但外界視,如left: -10000px。然後outerWidth()將工作。

試試這個:

var e = $('<span/>', {"class":'someClass',text:'Hello'}).css({ 
    'position': 'absolute', 
    'left': '-10000px' 
}).appendTo('body'); 
var outerWidth = e.outerWidth(); 
e.remove(); // remove the element from the DOM once we've got it's width 

Example fiddle

+0

是啊,這是我擔心的。謝謝 – user1032531

+0

是的,很遺憾,沒有真正的選擇,因爲元素必須是DOM的一部分才能計算寬度。 –

+0

這種方法的問題是,如果在未來的父級級聯上有任何樣式。認爲最好將其他文本放在同一位置,獲取寬度,然後放入最終文本?或者,也許將樣式複製到外部視口元素(這是如何完成的?)? – user1032531