计算所有列表项的总宽度?

时间:2010-06-17 09:53:56

标签: jquery loops width each

我的标准UL如下:

<ul>
  <li><a href="">Link</a></li>
  <li><a href="">Link</a></li>
  <li><a href="">Link</a></li>
  <li><a href="">Link</a></li>
  <li><a href="">Link</a></li>
</ul>

我想找一个快速的&amp;有效的方法来计算所有LI标签的组合。目前我有:

var width = 0;

$('ul li').each(function() {
 width += $(this).outerWidth();
});

我只是想知道是否有更快的方法可以在不使用循环的情况下获得相同的结果?

感谢您的帮助!

3 个答案:

答案 0 :(得分:4)

为了让完全你所追求的是什么,不是没有。这不是一个适合现有功能的情况,像你这样的循环是最快捷的方式。有人谈到将.childWidth()或其他东西放入核心...但我不会屏住呼吸:)

其他答案将包括父母的宽度,包括额外的空间,通常不是你所追求的,所以现在......坚持你的循环。任何更短的将被添加将保证完成相同数量的工作(可能相同的代码)。

答案 1 :(得分:0)

你可以获得ul元素本身的宽度,但这会给你宽度包括子弹和边距:

var width = $("ul").outerWidth();

答案 2 :(得分:0)

如果这是一个菜单且项目彼此相邻(而不是下方),请尝试$('ul').outerWidth()

[编辑]如果ul的宽度是固定的,则找到列表的最后一个元素并查看其右偏移量。由于offset始终相对于父元素,因此您只需添加offsetLeftoffsetWidth即可获得所有子元素的总宽度。