Jquery ширина () через итерацию? - PullRequest
0 голосов
/ 13 мая 2009

У меня возникли проблемы с итерацией и получением значений width ().

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

);

поэтому для каждого элемента "MyClass" я хотел бы найти ширину (некоторые отличаются).

Но приведенный выше код создает только width () первого экземпляра MyClass и возвращает 0 после этого.

Есть идеи по получению ширины каждого экземпляра MyClass?

Ответы [ 2 ]

4 голосов
/ 13 мая 2009

Используйте map вместо each для упрощения вашего кода:

$('.MyClass').map( function() {
    return $(this).width();
});
2 голосов
/ 13 мая 2009
var widths = [];
$('.MyClass').each(function() {
    widths.push($(this).width());
}); 

Должно работать нормально. Если бы вы показали немного больше кода, я мог бы выяснить, что происходит не так.

Обновление:

Когда вы используете этот метод? Вы ждете, пока DOM не будет готов, или просто выполните его немедленно? Если нет, то браузер может не завершить рендеринг всех этих элементов.

Попробуйте, если вы еще этого не сделали:

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