-1

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

这是代码:

$(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变量用于不同的功能。

4

2 回答 2

1
$('#firstRow > td')

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

问题出在循环中。

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

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

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

所以要解决你的问题:

$('#firstRow > td').each(function (index, element) {
    var tdclass = $(element).attr('class');
    // ...
});
于 2013-03-01T08:32:56.773 回答
1

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

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

    // ...
});
于 2013-03-01T08:34:14.200 回答