JS - 帮助 - 分组行

时间:2014-01-09 18:09:46

标签: javascript jquery html

我需要对从数据库返回的这些行进行分组。不幸的是,在数据库中,他们为每个联系信息创建了一个新的完整记录。

查看:

Name    TZ         Office    Cell      Home      Email
Andres  2442 3667  -         -         -         -
Andres  -          999-99-99 -         -         -
Andres  -          -         999-99-99 -         -
Andres  -          -         -         999-99-99 -
Andres  -          -         -         -         gchaves@itconvergence.com

HTML CODE

<table id="gptable">
<thead>
    <td>Name</td>
    <td>TZ</td>
    <td>Office</td>
    <td>Cell</td>
    <td>Home</td>
    <td>Email</td>
</thead>
<tbody>
    <tr>
    <td>Andres</td>
    <td>2442 3667</td>
    <td>-</td>
    <td>-</td>
    <td>-</td>
    <td>-</td>    
    </tr>
            <tr>
    <td>Andres</td>
    <td>-</td>
    <td>999-99-99</td>
    <td>-</td>
    <td >-</td>
    <td >-</td>    
    </tr> 
            <tr>
    <td>Andres</td>
    <td>-</td>
    <td>-</td>
    <td>999-99-99</td>
    <td>-</td>
    <td>-</td>    
    </tr> 
            <tr>
    <td>Andres</td>
    <td>-</td>
    <td>-</td>
    <td>-</td>
    <td>999-99-99</td>
    <td>-</td>    
    </tr> 
            <tr>
    <td>Andres</td>
    <td>-</td>
    <td>-</td>
    <td>-</td>
    <td>-</td>
    <td>gchaves@itconvergence.com</td>    
    </tr> 

</tbody>    

那么如何将所有这些行组合在一起呢? Fiddle.

2 个答案:

答案 0 :(得分:1)

将数据库中的每个字段存储为单个记录是非常糟糕的做法。但是如果你不能改变它,这样的东西应该在jQuery中起作用:

$(document).ready(function() {
    var str = first = "";
    $("#gptable tbody").each(function(l, tbody) {
       $(this).find("tr").each(function(i, tr) {
            $(tr).find("td").each(function(j, td) {
                if($(this).html() != "-" && j != 0) {
                    str += "<td>" + $(this).html() + "</td>";
                } else if(first == "") {
                    first = "<td>" + $(this).html() + "</td>";
                }
            });
       });
       $('#gptable tbody').empty();
       $('#gptable tbody').after("<tr>" + first + str + "</tr>");
    });
});

这是你的小提琴:http://jsfiddle.net/65wYn/2/

答案 1 :(得分:1)

我想是的,你可以将它们全部分成一行。  试试这个:

var $body = $('#gptable').find('tbody');
var $rows = $body.find('tr');
var newBody = document.createElement('tr');

var indexCounter = 1;
jQuery.each($rows, function (i, item) {
    if (i === 0) {
        $(newBody).append('<td>' + $(item).find('td').get(0).innerHTML + '</td>');
    }

    $(newBody).append('<td>' + $(item).find('td').get(indexCounter).innerHTML + '</td>');
    indexCounter++;
});

$('#gptable').find('tbody').empty().append(newBody);

然后,您获得了分组行:

Name    TZ  Office  Cell    Home    Email
Andres  2442 3667   999-99-99   999-99-99   999-99-99   gchaves@itconvergence.com

我希望它有所帮助。 JSFiddle示例:http://jsfiddle.net/amontellano/YZtkf/