loop foreach em jquery

votos
47

Eu tenho um problema onde eu estou recebendo o tamanho da janela em jquery então looping througbh três elementos img para aplicar a largura ao estilo embutido na mosca.

A questão é que quando o loop foreach é executado eu recebo este erro no TypeError Uncaught console: Object [object Object] não tem nenhum método 'setAttribute'

Eu pus um ponto de interrupção no circuito e aplicado setAttribute para este e parece funcionar bem. Eu não entendo por que quando se percorre a matriz não é tratar cada item matriz como um objeto, mas parece estar a tentar aceder a matriz como um objeto.

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

$(window).resize(function() {

    windowsize = $(window).width();

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

    });                                                                 
});

desculpe se isso não está claro

qualquer ajuda será muito apreciada

Publicado 26/07/2013 em 15:24
usuário
Em outras línguas...                            


2 respostas

votos
1

.setAttribute()é um método Javascript nativa. Como você estiver usando jQuery, use .attr()em vez disso:

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

ou:

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

ou ainda melhor:

$(this).width(windowsize);
Respondeu 26/07/2013 em 15:28
fonte usuário

votos
2

O setAttribute é um método js e não um método jQuery.

Você nem precisa de usar o método js matéria sobre o elemento DOM diretamente ou usar a versão .attr jQuery () do método.

Ambos os caminhos a seguir são os mesmos, mas pessoalmente usando os js nativos se sente melhor.

$( this ).attr("style","width:"+windowsize+"px");
this.setAttribute("style","width:"+windowsize+"px");
Respondeu 26/07/2013 em 15:28
fonte usuário

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