Foreach sløyfe i jquery

stemmer
47

Jeg har et problem der jeg får vindusstørrelsen i jquery så looping througbh tre img elementer for å bruke bredden til inline stil på fly.

Problemet er at når foreach sløyfen drives jeg denne feil i konsollen uoppfanget Feiltype: Object [objekt Object] har ingen metode 'setAttribute'

Jeg har satt et stoppunkt i loop og anvendt setAttribute til dette , og det ser ut til å fungere fint. Jeg forstår ikke hvorfor når den går gjennom rekken det er ikke å behandle hver matrise element som et objekt, men synes å være å prøve å få tilgang til matrisen som et objekt.

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

$(window).resize(function() {

    windowsize = $(window).width();

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

    });                                                                 
});

beklager hvis dette ikke er klart

hjelp vil i stor grad bli verdsatt

Publisert på 26/07/2013 klokken 14:24
bruker
På andre språk...                            


2 svar

stemmer
1

.setAttribute()er en innfødt Javascript metoden. Som du bruker jQuery, bruke .attr()i stedet:

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

eller:

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

eller enda bedre:

$(this).width(windowsize);
Svarte 26/07/2013 kl. 14:28
kilden bruker

stemmer
2

Den setAttribute er en js metode og ikke en jquery metode.

Du enten må bruke rå js metoden på DOM-element direkte eller bruke jQuery versjonen .attr () av metoden.

Både nedenfor måter er de samme, men personlig bruker de innfødte JS føles bedre.

$( this ).attr("style","width:"+windowsize+"px");
this.setAttribute("style","width:"+windowsize+"px");
Svarte 26/07/2013 kl. 14:28
kilden bruker

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