使用jQuery迭代表的元素

Iterate through elements of a table using jQuery

本文关键字:元素 迭代 jQuery 使用      更新时间:2023-09-26

我试图从特定行获得所有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而不是迭代。

UPDATE: i变量用于不同的函数

$('#firstRow > td')

这是正确的。上面的代码片段选择#firstRow元素内的所有td

问题在循环。

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

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

当你使用jQuery时,循环回调接收元素作为参数,同时作为上下文(this);.fn美元。各供参考。

所以要解决你的问题:

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

每次迭代都获得$('td')集合中第一个<td>元素的类。你可以把你的结构改成更优雅的:

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