获取所有li项目的组合宽度

时间:2014-03-18 13:50:23

标签: javascript jquery arrays

我创建了一个函数来获取导航菜单中所有li项的所有宽度,但是这个函数(下面)将所有项的宽度放入一个数组中。

我不需要数组。我只需要一个总数,即所有li宽度的总和。

如何将数组更改为一个变量?

谢谢。

var navigationItemsWidth = $.map($('.navigation-bar .nav li'),function(val){
    return $(val).width();
});

4 个答案:

答案 0 :(得分:4)

Map是一个创建数组的函数,你想要的是添加一个值。使用.each

var navigationItemsWidth = 0;
$('.navigation-bar .nav li').each(function(){
    navigationItemsWidth += $(this).width();
});

如果您想重复使用它,请使用:

$.fn.totalWidth = function(){
    var navigationItemsWidth = 0;
    this.each(function(){
        navigationItemsWidth += $(this).width();
    });    
    return navigationItemsWidth;
}

var navigationItemsWidth = $('navigation-bar .nav li').totalWidth()

答案 1 :(得分:3)

很多方法:

$sum = 0;

$('.navigation-bar .nav li').each(function(){
   $sum = $sum + $(this).width();
});

alert($sum);

答案 2 :(得分:2)

var navigationItemsWidth = (function(){
  var total = 0;
  $('.navigation-bar .nav li').each(function() { total+=$(this).width();});
  return total;
})();

或者,如果您想重用该功能,可以将其解压缩而不是立即执行,或将其添加为jQuery插件

$.fn.totalWidth = function() {
 var total = 0;
 this.each(function() { total+=$(this).width();});
  return total;
};

var navigationItemsWidth = $('.navigation-bar .nav li').totalWidth();

答案 3 :(得分:-1)

这应该有效:

var count = $('.navigation-bar .nav li').size();
var list_items_width=array();
for (var i = 0; i < count; i++) {
     list_items_width.push($('.navigation-bar .nav li').eq(i).width());
}
var total_width = 0;
for (var j = 0; j < count; j++) {
    total_width = total_width + list_items_width[j];
}