boucle Foreach dans jquery

voix
47

J'ai un problème où je reçois la taille de la fenêtre en jquery en boucle puis througbh trois éléments img pour appliquer la largeur du style en ligne à la volée.

Le problème est que lorsque la boucle de foreach est exécuté je reçois cette erreur de la console Uncaught TypeError: Object [object Object] n'a pas de méthode « setAttribute »

Je mets un point d' arrêt dans la boucle et appliquée setAttribute à ce et il semble fonctionner très bien. Je ne comprends pas pourquoi quand il boucle à travers le tableau , il ne traite pas chaque élément du tableau comme un objet , mais semble essayer d'accéder au tableau comme un objet.

var windowsize = $(window).width();

$(window).resize(function() {

    windowsize = $(window).width();

    $( #imgs img ).each(function (){
        $( this ).setAttribute(style,width:+windowsize+px);

    });                                                                 
});

désolé si ce n'est pas clair

toute aide sera grandement appréciée

Créé 26/07/2013 à 15:24
utilisateur
Dans d'autres langues...                            


2 réponses

voix
1

.setAttribute()est une méthode Javascript natif. Comme vous utilisez jQuery, utilisez à la .attr()place:

$(this).attr("style", "width:" + windowsize + "px");

ou:

$(this).css("width", windowsize + "px");

ou mieux encore:

$(this).width(windowsize);
Créé 26/07/2013 à 15:28
source utilisateur

voix
2

Le setAttribute est une méthode js et non une méthode jquery.

Vous avez besoin soit d'utiliser la méthode js brute sur l'élément DOM directement ou utiliser la Version jQuery .attr () de la méthode.

Les deux façons ci-dessous sont les mêmes, mais en utilisant personnellement les js indigènes se sent mieux.

$( this ).attr("style","width:"+windowsize+"px");
this.setAttribute("style","width:"+windowsize+"px");
Créé 26/07/2013 à 15:28
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more