bucle Foreach en jquery

votos
47

Tengo un problema en el que estoy consiguiendo el tamaño de la ventana de jQuery entonces bucle througbh tres elementos img para aplicar el ancho de estilo en línea sobre la marcha.

El problema es que cuando se ejecuta el bucle foreach me sale este error en la consola TypeError no detectada: Object [object Object] tiene ningún método 'setAttribute'

He puesto un punto de interrupción en el circuito y se aplica setAttribute a este y parece funcionar bien. No entiendo por qué cuando se realiza un bucle a través de la matriz no es tratar a cada elemento de la matriz como un objeto, pero parece estar tratando de acceder a la matriz como un objeto.

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

$(window).resize(function() {

    windowsize = $(window).width();

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

    });                                                                 
});

Lo siento si esto no es clara

cualquier ayuda será en gran medida se apreciará

Publicado el 26/07/2013 a las 15:24
por usuario
En otros idiomas...                            


2 respuestas

votos
1

.setAttribute()es un método Javascript nativo. Como usted está usando jQuery, utilice .attr()en su lugar:

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

o:

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

o mejor:

$(this).width(windowsize);
Respondida el 26/07/2013 a las 15:28
fuente por usuario

votos
2

El setAttribute es un método js y no un método jQuery.

Que o bien es necesario utilizar el método de JS crudo en el elemento DOM directamente o utilizar el versión .attr jQuery () del método.

Tanto las formas siguientes son los mismos, pero utilizando personalmente el js nativos se siente mejor.

$( this ).attr("style","width:"+windowsize+"px");
this.setAttribute("style","width:"+windowsize+"px");
Respondida el 26/07/2013 a las 15:28
fuente por usuario

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