Pergunta

Eu estou tendo um pouco de iteração problemas e recuperar largura () valores.

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

);

então para cada elemento "MyClass" Eu gostaria de encontrar a largura (alguns são diferentes).

Mas o código acima produz apenas a largura () da primeira instância de MyClass e retorna 0 para depois disso.

Todas as ideias sobre a possibilidade de obter a largura de cada instância de MyClass?

Foi útil?

Solução

Use map vez de each para simplificar o seu código:

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

Outras dicas

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

deve funcionar muito bem. Se você mostrou um pouco mais código que eu poderia ser capaz de descobrir o que está acontecendo de errado.

Update:

Quando você está correndo este método? Você está esperando até que o DOM está pronto, ou apenas executá-lo imediatamente? Se não, o navegador não pode ser feito tornando todos esses elementos ainda.

Tente isto se você ainda não estiver:

var widths = [];
$(document).ready(function() {
    $('.MyClass').each(function() {
        widths.push($(this).width());
    }); 
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top