所以我有幾個<span>
動態生成的元素。問題是我需要一起了解它們的寬度。我試圖用<div>
和alert($("#spanWrap").width());
來包裝它們,但它給出了容器的寬度而不是<span>
元素。是否可以獲得多個<span>元素的寬度?
我想我可以試着給它最好的jsFiddl'n在這裏解釋一下:http://jsfiddle.net/XGynv/7/
所以我有幾個<span>
動態生成的元素。問題是我需要一起了解它們的寬度。我試圖用<div>
和alert($("#spanWrap").width());
來包裝它們,但它給出了容器的寬度而不是<span>
元素。是否可以獲得多個<span>元素的寬度?
我想我可以試着給它最好的jsFiddl'n在這裏解釋一下:http://jsfiddle.net/XGynv/7/
將display: inline-block;
添加到您的div的樣式包裝跨度。
編輯:
與包裹在一個div的,跨度爲
<div id="spanwrapper">
<span>span1</span>
<span>span2</span>
</div>
的CSS樣式應該包含(順序,看到gilly3評論):
#spanwrapper {
display: inline-block; // the div shrinks to fit around the content
}
#spanwrapper {
*display: inline; // adding support for IE7 or lower
}
這樣你就可以用jquery得到寬度:
$("#spanwrapper").width();
或使用常規的javascript:
document.getElementById('spanwrapper').clientWidth;
注意,由瀏覽器定義的大小,它現在沒有意義來定義風格的一個固定的寬度。
喜歡的東西
var size = 0;
$('span.someclass').each(function(el) { size += $(el).width(); });
?
除非你編寫自己的代碼來合併每個跨度的寬度,否則你無法做到這一點。
var w = 0;
$("#divMenuSpan span").each(function(){
w += $(this).width();
});
//Now w will have the combined width of all the spans inside divMenuSpan
這是一個明顯的答案,但你可能只是做 -
parseInt($("#fashion").width()) + parseInt($("#wedding").width())
我更新了您的jsFiddle。
基本上我循環遍歷和總結寬度。
這是因爲div是塊元素,塊元素始終填充其容器的寬度。爲了讓一個div適合其內容的寬度,浮起來:
#wrap
{
width: 666px;
overflow: hidden;
}
#divMenuSpan
{
float: left;
}
編輯:我應該指出的是,如果你的跨度包裹,浮起的容器div的寬度將縮小使用這種技術。如果你想要跨度的實際寬度,你必須在一個循環中迭代div,並加上它們寬度的總和。
您可以編寫JavaScript代碼來計算它。
$(document).ready(function() {
var spans = $("span"), //span collection
width = 0;
spans.each(function(index,ele){
width = width + $(ele).outerWidth(true); //here, it will include margin.
});
console.log(width);
});
默認情況下,div將展開以獲取其容器的寬度。如果你需要它們縮小到其內容的寬度,一個選項是使它們浮動。 http://jsfiddle.net/M4hWu/2/ – DanC