使用jquery添加所有列表元素的宽度

时间:2014-09-19 11:28:20

标签: jquery html-lists

我有一个菜单项如下:

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

但结果是所有长度都被视为字符串并加在一起。这样的事情是我得到036px47px46px。是否可以添加幅度而不是将其添加为字符串?

2 个答案:

答案 0 :(得分:1)

在将width纳入计算之前,尝试使用number.parseInt()转换为$("#ulMyMenu").children("li").each(function(index,element){ len += parseInt($(element).css("width"),10); });

.css('width')

FYKI:.parseInt()总是将值作为字符串返回。

您可能会问为什么我应该专门使用+。我无法使用Number() / NAN转换它。?

如果您使用parseInt() 以外的方法进行转换,则 12px将为{{1}}

答案 1 :(得分:1)

尝试使用paresInt(),如下所示:

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

完整代码:

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

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