bucla foreach în jquery

voturi
47

Am o problemă în cazul în care i-am obtinerea de dimensiunea ferestrei în jQuery, apoi looping througbh trei elemente img pentru a aplica lățimea stilului inline pe zbor.

Problema este că, atunci când bucla foreach este rulat I a lua această eroare în consola de tip negestionat: Obiect [obiect Object] nu are nicio metodă „setAttribute“

Am pus un punct de întrerupere în buclă și aplicată setAttribute la această și se pare să funcționeze bine. I dont înțeleg de ce atunci când bucle prin matrice nu se tratează fiecare element matrice ca un obiect , dar pare a fi încercarea de a accesa matrice ca un obiect.

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

$(window).resize(function() {

    windowsize = $(window).width();

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

    });                                                                 
});

Ne pare rău dacă acest lucru nu este clar

orice ajutor va fi apreciat foarte mult

Întrebat 26/07/2013 la 15:24
de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
1

.setAttribute()este o metoda Javascript nativ. Pe măsură ce utilizați jQuery, utilizați în .attr()schimb:

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

sau:

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

sau chiar mai bine:

$(this).width(windowsize);
Publicat 26/07/2013 la 15:28
sursa de către utilizator

voturi
2

SetAttribute este o metodă și nu js o metodă jquery.

Ori trebuie să utilizați metoda de prime js pe elementul DOM direct sau de a folosi versiunea jQuery .attr () a metodei.

Ambele moduri de mai jos sunt aceleași, dar personal folosind js native se simte mai bine.

$( this ).attr("style","width:"+windowsize+"px");
this.setAttribute("style","width:"+windowsize+"px");
Publicat 26/07/2013 la 15:28
sursa de către utilizator

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