Javascript 是否有可能获得多重宽度<;span>;元素?
因此,我有两个动态生成的Javascript 是否有可能获得多重宽度<;span>;元素?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,因此,我有两个动态生成的元素。问题是我需要知道它们的宽度。我试图用包装它们,并发出警报($(“#spanWrap”).width()
元素。问题是我需要知道它们的宽度。我试图用
包装它们,并发出警报($(“#spanWrap”).width()但它给出了容器的宽度,而不是
元素
我想我可以在这里用jsFiddl'n it来最好地解释它:类似于
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())
如果将容器更改为span而不是div,可能会更容易
<span id="divMenuSpan">
我更新了您的
基本上,我是在跨距中循环并求和宽度。添加显示:内联块代码>到环绕跨距的div的样式
编辑:
将跨距包裹在div中,如中所示
<div id="spanwrapper">
<span>span1</span>
<span>span2</span>
</div>
因此,您可以使用jquery获得宽度:
$("#spanwrapper").width();
或者使用传统的javascript:
document.getElementById('spanwrapper').clientWidth;
请注意,对于浏览器定义的大小,现在在样式中定义固定宽度没有意义。这是因为div是块元素,块元素始终填充其容器的宽度。要使div适合其内容的宽度,请将其浮动:
Edit:我应该指出,如果span换行,浮动容器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将展开以获取其容器的宽度。如果您需要它们收缩到其内容的宽度,一个选项是使它们浮动。如果您计划支持IE5.5中的IE7.inline-block,请小心将inline-block应用于div-IE7只能应用于inline元素。因此,如果将内联块应用于div,该div的显示将保持为块。有一个技巧可以让它工作,但如果不小心使用它,可能会弄乱其他浏览器:首先将div设置为inline block。然后,在后面的样式声明中,将其设置为inline。使用此技巧,div将在IE7中显示为内联块,但在较新的浏览器中显示为内联块。因此,在上面的编辑中,在内联块下方添加display:inline使解决方案通常有效?否。您必须将display:inline代码>在单独的声明块中。例如,#x{display:inline block;}#x{display:inline;}
。然后,您必须将第二个声明放在仅IE代码中,例如通过使用条件注释,否则其他浏览器都将是inline
,而不是inline block
;我检查了条件语句是否可以用于css块中的一行,因此同一块中的“[if lte IE 7]”也应该执行此任务。
#wrap
{
width: 666px;
overflow: hidden;
}
#divMenuSpan
{
float: left;
}
$(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);
});