Foreach lus jQuery

stemmen
47

Ik heb een probleem waar ik de grootte van het venster krijg in jQuery dan looping througbh drie img elementen aan de breedte van toepassing op de inline stijl op de vlieg.

Het probleem is dat wanneer de foreach lus wordt uitgevoerd krijg ik deze fout in de console Uncaught TypeError: Object [object Object] heeft geen methode 'setAttribute'

Ik heb een breakpoint in de lus en toegepast setAttribute om dit en het lijkt goed te werken. Ik begrijp niet waarom als het doorloopt de array is het niet behandelen van elke serie item als een object, maar lijkt te proberen om toegang te krijgen tot de array als een object.

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

$(window).resize(function() {

    windowsize = $(window).width();

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

    });                                                                 
});

sorry als dit niet duidelijk

Alle hulp wordt zeer gewaardeerd worden

De vraag is gesteld op 26/07/2013 om 15:24
user
In andere talen...                            


2 antwoorden

stemmen
1

.setAttribute()is een native JavaScript-methode. Als u gebruik maakt van jQuery, gebruik .attr()in plaats daarvan:

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

of:

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

of nog beter:

$(this).width(windowsize);
antwoordde op 26/07/2013 om 15:28
bron van user

stemmen
2

De setAttribute is een js werkwijze en geen jQuery methode.

U ofwel moeten de ruwe js methode direct op de DOM-element of gebruik de jQuery versie .attr () van de methode.

Zowel de volgende manieren zijn hetzelfde, maar persoonlijk gebruik van de inheemse js zich beter voelt.

$( this ).attr("style","width:"+windowsize+"px");
this.setAttribute("style","width:"+windowsize+"px");
antwoordde op 26/07/2013 om 15:28
bron van user

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