将列附加到从右侧偏移的HTML表

时间:2013-06-09 00:50:42

标签: jquery html-table sum dynamic-columns

如何计算表格第一行中的列数,减1,然后在该位置插入一列到我的表中?我希望该列的第一行与其余列不同。

Here is a basic fiddle that inserts columns into a table at a fixed location.

This topic discusses inserting new columns.问题是它使用从左侧开始固定的位置来插入列。它也不会改变顶部列。

以下是我从该帖子改编的示例代码:

$(document).ready(function(){
   $('#AddOT').click(function(){
      $('#Table1').find('tr').each(function(){
          $(this).find('td').eq(0).after('<td>cell 1a</td>');
      });
    });
 });

This topic discusses determining the number of columns in "tables".示例似乎不起作用,因为在HTML中放置多个表会产生问题:

    $(function() {
        var colCount = 0;
        $('tr:nth-child(1) td').each(function () {
            if ($(this).attr('colspan')) {
                colCount += +$(this).attr('colspan');
            } else {
                colCount++;
            }
        });
    });

有一个jsfiddle来计算列数。

编辑:问题已解决,我能够a revised fiddle that places different content into different rows according to the row index value.

这将非常有用,因为我在不同的行上有不同类别的文本输入框,我根据类对它们求和。我现在可以动态地向所有行添加新列,但仍然在每行中保留唯一的单元类。真棒!

1 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解您的要求。看看demo

$(document).ready(function(){
            $('#AddOT').click(function(){
                   var count = countColumn();
                   var insertedPosition = count-2;
                    $('#Table1').find('tr').each(function(index){
                        if (index == 0){
                            var colspan = $(this).attr('colspan') || "1";
$(this).attr('colspan',parseInt(colspan)+1);                            
                        }
                        else
                        {
                        $(this).find('td').eq(insertedPosition ).after('<td>cell 1a</td>');
                        }
                    });

            });
});

function countColumn() {
    var colCount = 0;
    $('tr:nth-child(1) td').each(function () {
        if ($(this).attr('colspan')) {
            colCount += +$(this).attr('colspan');
        } else {
            colCount++;
        }
    });
    return colCount;
}