Вопрос

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

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

);

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

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

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

Это было полезно?

Решение

Использование map вместо того , чтобы each чтобы упростить ваш код:

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

Другие советы

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

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

Обновить:

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

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

var widths = [];
$(document).ready(function() {
    $('.MyClass').each(function() {
        widths.push($(this).width());
    }); 
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top