Domanda

Sto avendo un po 'di problemi iterazione e recuperare la larghezza () valori.

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

);

così per ogni elemento "MyClass" vorrei trovare la larghezza (alcuni sono diversi).

Ma il codice precedente produce solo la larghezza () della prima istanza di MyClass e restituisce 0 del dopo.

Tutte le idee su di essere in grado di ottenere la larghezza di ogni istanza di MyClass?

È stato utile?

Soluzione

Utilizzare map invece di each per semplificare il codice:

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

Altri suggerimenti

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

dovrebbe funzionare bene. Se hai mostrato un po 'più di codice potrei essere in grado di capire che cosa sta andando male.

Aggiornamento:

Quando si esegue questo metodo? Stai aspettando fino a quando il DOM è pronto, o semplicemente eseguendo immediatamente? In caso contrario, il browser non può essere fatto rendendo tutti questi elementi ancora.

Prova questo se non si è già:

var widths = [];
$(document).ready(function() {
    $('.MyClass').each(function() {
        widths.push($(this).width());
    }); 
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top