2014-09-19 45 views
0

所有列表元素的宽度,我有如下菜单项:添加使用jQuery

<ul id="ulMyMenu">     
    <li >testitem</li> 
    <li >TestTestItem</li> 
    <li >TestTestItemItem Item</li> 
</ul> 

我想所有<li/>的加在一起的<ul/>内部宽度。 我写了下面的脚本:

var len=0; 
$("#ulMyMenu").children("li").each(function(index,element){ 
len=len+ $(element).css("width"); 
}); 
console.log(len); 

但结果是像所有的长度作为串并添加together.Something这样是我得到036px47px46px。是否可以添加大小而不是将其添加为字符串?

回答

1

尝试通过使用.parseInt()涉及该成计算前widthnumber转换,

$("#ulMyMenu").children("li").each(function(index,element){ 
    len += parseInt($(element).css("width"),10); 
}); 

FYKI:.css('width')总是返回值作为一个字符串。

您可能会问为什么我应该使用.parseInt()具体。我不能使用+/​​来进行转换。

答案是:12px的是NAN,如果你把它转换使用比其他方法使用paresInt()如图parseInt()

+0

好的。为什么呢,10里面parseInt()函数 – Arvin 2014-09-19 11:32:27

+0

@Arvin它是一个基数,决定了转换的方法。 – 2014-09-19 11:33:48

+0

这是必要的 – Arvin 2014-09-19 11:34:25

1

尝试:

len = len + parseInt($(element).css("width"),10); 

完整代码:

$("#ulMyMenu").children("li").each(function(index,element){ 
    len += parseInt($(element).css("width"),10); 
}); 

在javascript/jquery中,无论何时处理数字使用parseIntparseFloat,否则值将被视为string