2009-05-13 8 views
0

J'ai un peu de mal à parcourir et récupérer les valeurs width().Jquery width() par itération?

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

);

donc pour chaque élément "MyClass" je voudrais trouver la largeur (certains sont différents).

Mais le code ci-dessus ne produit que la largeur() de la première instance de MyClass et renvoie 0 après cela.

Des idées sur la possibilité d'obtenir la largeur de chaque instance de MyClass?

+0

En réponse à votre commentaire à TM, nous devrions regarder votre HTML (et probablement CSS) afin de résoudre le problème. Veuillez fournir le code nécessaire pour dupliquer le problème (ou l'héberger sur http://jsbin.com) afin que nous puissions vous aider. – brianpeiris

Répondre

4

Utilisation map au lieu de each pour simplifier votre code:

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

Merci à vous deux :) –

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

Cela devrait fonctionner correctement. Si vous montriez un peu plus de code, je pourrais peut-être comprendre ce qui ne va pas.

Mise à jour:

Quand utilisez-vous cette méthode? Attendez-vous que le DOM soit prêt ou que vous l'exécutiez immédiatement? Si ce n'est pas le cas, le navigateur n'a peut-être pas encore rendu tous ces éléments.

Essayez si vous n'êtes pas déjà:

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

malheureusement, cela n'a pas fait l'affaire. Leur n'est pas beaucoup plus à mon code - j'ai quelques 20 cas de MyClass sur la page (certains avec des largeurs différentes) et je voudrais obtenir la largeur de chacun. Bien que cette méthode a certainement poussé la valeur de largeur initiale dans le tableau - les valeurs suivantes étaient toutes 0. J'ai vérifié cela en commutant width() avec text() - text() sorties du contenu original de chaque classe; le paramètre de largeur d'une part ne finira pas en définissant la première valeur. merci Slavik. –

+0

L'exécutez-vous immédiatement sur la page ou attendez-vous que le DOM soit chargé? Voir la mise à jour que je viens de faire à ma réponse. –