【问题标题】:Iterate through elements of a table using jQuery使用 jQuery 遍历表的元素
【发布时间】:2013-03-01 08:31:01
【问题描述】:

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

代码如下:

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

【问题讨论】:

    标签: javascript jquery iteration


    【解决方案1】:
    $('#firstRow > td')
    

    这是正确的。上面的 sn-p 选择了 tds 里面的所有 #firstRow 元素。

    问题出在循环中。

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

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

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

    所以要解决你的问题:

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

    【讨论】:

    • 谢谢...节省了一天的时间,当 SO 允许我在大约 10 分钟内完成时,我会接受答案。
    【解决方案2】:

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

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

    【讨论】:

    • 谢谢,但@Bruno 的回答做到了...还是谢谢
    猜你喜欢
    • 2011-10-04
    • 1970-01-01
    • 2011-01-14
    • 2018-06-05
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多