【问题标题】:Jquery iterate table, having merged cells, rows and columns but skip first columnJquery迭代表,合并单元格,行和列但跳过第一列
【发布时间】:2016-10-24 23:24:07
【问题描述】:

我可以迭代所有行和列,但是当表格合并单元格时它不起作用。 它不会遍历所有普通列的合并行(没有任何合并单元格)。

我的脚本:

$('#test tr').each(function() {
   $(this).find('td').each(function(colIndex)   
    {
        if(colIndex > 1)
        {
        $(this).css('background-color', 'red');
        }
    });   
});

A like example/test is available here:

【问题讨论】:

    标签: jquery html-table


    【解决方案1】:
    $('#test tr').each(function() {
    
    
    
        var rowcount=0;
       $(this).find('td').each(function(colIndex)   
        {
            if(colIndex > 1)
            {
            $(this).css('background-color', 'red');
            }
          rowcount ++;
        }); 
      if(rowcount==2)
      {
         $(this).find('td').each(function(colIndex)   
        {
            if(colIndex == 1)
            {
            $(this).css('background-color', 'red');
            }
    
        });
      }
    
    
    });
    

    像这样修改你的 jquery。这会做。 http://jsfiddle.net/dolours/pMWAw/26/

    【讨论】:

    • 解决方案是硬编码的 2 个合并单元格(rowspan=2),但实际情况不同。第一列中可以有任意数量的合并单元格。我们如何跳过第一列并从第二列开始列迭代?这样我们就不需要关心合并了多少个单元格。
    • 如果行跨度发生变化,那么它会影响下一个列吗?无法清楚地得到你想要的
    • 您已对其进行硬编码以计算 2 列,然后开始查找下一行,因为合并的单元格跨越 2 行,但不同单元格的行平移可能不同,并且可以有 3 列中的任意数量的列到 n 因此我希望它保持动态。请检查解决方案,我已更新为小提琴示例。
    • 我更新了我的小提琴是你想说的吗?你的小提琴没有更新
    • 只有在第一列之后有 2 列时,您的解决方案才有效。如果添加了另一列,则需要将其更改为 3,并且所有新列都需要以此类推?
    【解决方案2】:

    可以简化为一行 - 只需使用 :last-child 选择器

    $('#test tr td:last-child').css('background-color', 'red');
    

    http://jsfiddle.net/pMWAw/12/

    【讨论】:

    • 表格右侧可以有任意数量的列,因此我需要迭代除第一列(已合并单元格)之外的所有行和所有列
    猜你喜欢
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2011-08-21
    • 2017-04-03
    • 2019-02-14
    • 1970-01-01
    • 2013-10-03
    相关资源
    最近更新 更多