使用jQuery迭代表的元素

时间:2013-03-01 08:31:01

标签: javascript jquery iteration

我正在尝试从特定行获取所有td

以下是代码:

$(window).scroll(function () {
  var widthArray = new Array();
  var i=0;
  $('#firstRow > td').each(function () {
    var tdclass = $('td').attr('class');
    console.log(tdclass);
    widthArray.push(tdclass);
    i=i+1;
  });
});

但它会在第一个td停止而不是迭代。

更新: i变量用于其他功能。

2 个答案:

答案 0 :(得分:1)

$('#firstRow > td')

这是对的。上面的代码段会选择td元素内的所有#firstRow

问题在于循环。

var tdclass = $('td').attr('class');

在这里,您忽略了要循环的所选td,并选择页面中的所有td;这就是$('td')函数的作用。

当你使用jQuery时,循环回调接收元素作为参数,都作为context(this); $.fn.each供参考。

所以要解决你的问题:

$('#firstRow > td').each(function (index, element) {
    var tdclass = $(element).attr('class');
    // ...
});

答案 1 :(得分:1)

每次迭代,您都会获得<td>集合中第一个$('td')元素的类。您可以将构造更改为更优雅:

$(window).scroll(function() {
    var widthArray = $("#firstRow > td").map(function() {
            return this.className;
        }).get(),
        i = widthArray.length;

    // ...
});