使用jQuery获取列表中每个元素的宽度

时间:2011-02-01 03:35:22

标签: jquery width each

我试图获取元素中每个列表项的宽度值,但它不断返回对象而不是宽度。这应该很简单,但由于某种原因,我一定会遗漏一些东西。

这是我的代码:

    var listWidth = $('ul li').each(function(){
        return $(this).width();
    });

    console.log(listWidth);

3 个答案:

答案 0 :(得分:7)

使用map()(docs)方法将值返回给jQuery对象,然后使用get()(docs)方法将其转换为数组。

var listWidth = $('ul li').map(function(){
    return $(this).width();
}).get();

或类似地,您可以使用返回数组的jQuery.map()(docs)方法。

var listWidth = $.map($('ul li'),function(val){
    return $(val).width();
});

答案 1 :(得分:3)

您也可以通过将值推送到数组来获取它们:

var listWidth = [];
$('ul li').each(function() {
    listWidth.push($(this).width());
});

console.log(listWidth);

Here's an example.

答案 2 :(得分:-1)

由于您将拥有多个列表项,因此您可以随时创建一个宽度数组:

var listWidth = [];
$('ul li').each(function(){
    listWidth.push($(this).width());
});

console.log(listWidth);

或者,您可以创建宽度为

的对象
var listWidth = {};
$('ul li').each(function(){
    listWidth[$(this).attr('id')] = $(this).width();
});

console.log(listWidth);

此示例创建一个对象,其中包含标记的id及其宽度({ id1: width, id2: width, etc...},假设每个标记都有一个id)。

您发布的示例代码存在的问题是,在返回宽度时,它将其返回到each函数(可能只是丢弃它),但listWidth是返回值each函数,而不是内部的匿名函数(因此,因为每个函数都返回一个jQuery对象,即分配给listWidth的函数)。