ciclo foreach in jQuery

voti
47

Ho un problema in cui sto ottenendo la dimensione della finestra in jQuery poi loop througbh tre elementi img per applicare la larghezza allo stile in linea al volo.

Il problema è che quando il ciclo foreach è gestito ottengo questo errore nella console TypeError Uncaught: Object [object Object] non ha un metodo 'setAttribute'

Ho messo un punto di interruzione nel ciclo e applicata setAttribute per questo e sembra funzionare bene. Non capisco perché quando si scorre la matrice non è trattare ogni elemento array come un oggetto, ma sembra che si stia tentando di accedere alla matrice come un oggetto.

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

$(window).resize(function() {

    windowsize = $(window).width();

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

    });                                                                 
});

scusate se questo non è chiaro

qualsiasi aiuto sarà notevolmente apprezzato

È pubblicato 26/07/2013 alle 15:24
dall'utente
In altre lingue...                            


2 risposte

voti
1

.setAttribute()è un metodo nativo Javascript. Come si sta utilizzando jQuery, utilizzare .attr()invece:

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

o:

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

o meglio ancora:

$(this).width(windowsize);
Risposto il 26/07/2013 a 15:28
fonte dall'utente

voti
2

Il setAttribute è un metodo js e non un metodo di jQuery.

Si sia necessario utilizzare il metodo js grezzo sull'elemento DOM direttamente o utilizzare la versione di jQuery .attr () del metodo.

Entrambi i modi di seguito sono gli stessi, ma personalmente utilizzando i js nativi si sente meglio.

$( this ).attr("style","width:"+windowsize+"px");
this.setAttribute("style","width:"+windowsize+"px");
Risposto il 26/07/2013 a 15:28
fonte dall'utente

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