在jquery中的Foreach循环

时间:2013-07-26 16:24:22

标签: javascript jquery

我有一个问题,我在jquery中获取窗口大小然后循环througbh三个img元素,以便在运行时将宽度应用于内联样式。

问题是当运行foreach循环时,我在控制台中收到此错误 未捕获的TypeError:Object [object Object]没有方法'setAttribute'

我在循环中放了一个断点,并将setAttribute应用于 this ,它似乎工作正常。我不明白为什么当它循环遍历数组时,它不会将每个数组项视为一个对象,但似乎是试图将数组作为对象访问。

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

$(window).resize(function() {

    windowsize = $(window).width();

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

    });                                                                 
});

对不起,如果不清楚

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

setAttribute是js方法而不是jquery方法。

您需要直接在DOM元素上使用原始js方法,或使用方法的jQuery version .attr()

以下两种方式都相同,但亲自使用原生js感觉更好。

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

答案 1 :(得分:1)

.setAttribute()是一种原生的Javascript方法。当您使用jQuery时,请使用.attr()代替:

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

或:

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

甚至更好:

$(this).width(windowsize);