Jquery width()通过迭代?

时间:2009-05-13 04:03:20

标签: javascript jquery width each

我在迭代和检索width()值方面遇到了一些麻烦。

$(".MyClass").each( 
function(){
    elemWidth=$(this).width();
}

);

所以对于每个“MyClass”元素,我想找到宽度(有些是不同的)。

但是上面的代码只生成MyClass的第一个实例的width()并在此之后返回0。

有关能够获得MyClass的每个实例的宽度的任何想法吗?

2 个答案:

答案 0 :(得分:4)

使用map代替each来简化代码:

$('.MyClass').map( function() {
    return $(this).width();
});

答案 1 :(得分:2)

var widths = [];
$('.MyClass').each(function() {
    widths.push($(this).width());
}); 

应该工作得很好。如果你展示了更多的代码,我可能会弄清楚出了什么问题。

<强>更新

你什么时候运行这种方法?您是否在等待DOM准备好,或者只是立即执行它?如果没有,浏览器可能还没有完成渲染所有这些元素。

如果你还没有尝试这个:

var widths = [];
$(document).ready(function() {
    $('.MyClass').each(function() {
        widths.push($(this).width());
    }); 
});