Foreach петля в JQuery

голоса
47

У меня есть проблема, когда я получаю размер окна в JQuery затем обхвата througbh три Img элементов, чтобы применить ширину внутреннего стиля на лету.

Проблема в том, что, когда цикл Еогеаспа запускается я получаю эту ошибку в консоли неперехваченного TypeError: Object [объект Object] не имеет методы «SetAttribute»

Я поставил точку останова в цикле и применяется SetAttribute к этим и, кажется, работает хорошо. Я не понимаю , почему , когда он перебирает массив он не обрабатывает каждый элемент массива в качестве объекта , но , кажется, пытается получить доступ к массиву как объект.

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

$(window).resize(function() {

    windowsize = $(window).width();

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

    });                                                                 
});

жаль, если это не ясно

любая помощь будет в значительной степени будут оценены

Задан 26/07/2013 в 15:24
пользователем
На других языках...                            


2 ответов

голоса
1

.setAttribute()это нативный метод Javascript. Как вы используете JQuery, используйте .attr()вместо этого:

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

или:

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

или еще лучше:

$(this).width(windowsize);
Ответил 26/07/2013 в 15:28
источник пользователем

голоса
2

SetAttribute представляет собой метод JS , а не метод JQuery.

Вы либо должны использовать необработанный JS метод на элемент DOM непосредственно или использовать JQuery версии .attr () метода.

Оба ниже пути одинаковы, но лично используя родную JS чувствует себя лучше.

$( this ).attr("style","width:"+windowsize+"px");
this.setAttribute("style","width:"+windowsize+"px");
Ответил 26/07/2013 в 15:28
источник пользователем

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