jQuery将两个tr类合并为一个类

jQuery将两个tr类合并为一个类,jquery,html-table,Jquery,Html Table,抱歉,刚刚得到更新,tr类A和B重复了很多次。我想把每个AB组合成C并显示所有的C 我有一张这样的桌子: <table class="table"> <tbody> <tr class="A"> <td>11111</td> <td>22222</td> <td>33333</td> </tr> <tr class="B"> <td>44444&

抱歉,刚刚得到更新,tr类A和B重复了很多次。我想把每个AB组合成C并显示所有的C

我有一张这样的桌子:

<table class="table">
<tbody>
<tr class="A">
<td>11111</td>
<td>22222</td>
<td>33333</td>    
</tr>
<tr class="B">
<td>44444</td>
<td>55555</td>
<td>66666</td>    
</tr>
<tr class="A">
<td>77777</td>
<td>88888</td>
<td>99999</td>    
</tr>
<tr class="B">
<td>10101</td>
<td>11111</td>
<td>22222</td>    
</tr>
</tbody>
</table>
var c = $('.C');

c.append($('.A').children().clone());
c.append($('.B').children().clone());

11111
22222
33333
44444
55555
66666
77777
88888
99999
10101
11111
22222
我想做的是使用jQuery将两个tr组合在一起,如下所示:

<table class="table">
<tbody>
<tr class="C">
<td>11111</td>
<td>22222</td>
<td>33333</td>    
<td>44444</td>
<td>55555</td>
<td>66666</td>    
</tr>
<tr class="C">
<td>77777</td>
<td>88888</td>
<td>99999</td>    
<td>10101</td>
<td>11111</td>
<td>22222</td>    
</tr>
</tbody>
</table>

11111
22222
33333
44444
55555
66666
77777
88888
99999
10101
11111
22222

以下是一个工作示例:


注意:在回答此问题后,问题已更新以反映多个A&B组。

要保留第一个表并将数据插入第二个表,您可以执行以下操作:

<table class="table">
<tbody>
<tr class="A">
<td>11111</td>
<td>22222</td>
<td>33333</td>    
</tr>
<tr class="B">
<td>44444</td>
<td>55555</td>
<td>66666</td>    
</tr>
<tr class="A">
<td>77777</td>
<td>88888</td>
<td>99999</td>    
</tr>
<tr class="B">
<td>10101</td>
<td>11111</td>
<td>22222</td>    
</tr>
</tbody>
</table>
var c = $('.C');

c.append($('.A').children().clone());
c.append($('.B').children().clone());

这里是另一种方法

var allTds = $('.table > tbody > tr > td');  // Get all the TD's
$("tbody").html("<tr class='C'></tr>");      // Add the TR C Class
$(".C").html(allTds);                        // Add the TD's
var allTds=$('.table>tbody>tr>td');//获取所有TD的
$(“tbody”).html(“”;//添加trc类
$(“.C”).html(所有TDS);//加上运输署的
一个衬里:

$('.A,.B').remove().children('td').appendTo($('<tr />', {'class':'C'})
                                  .appendTo('table'));​

这里有一个性能更高的单衬里:

$('.A').prop('class', 'C').append( $('.B').remove().children() );
这是小提琴:


如果有倍数,请使用以下选项:

$('.A').each(function() {
    $(this).prop('class', 'C').append( $(this).next().remove().children() );
});
这是小提琴:


…如果你能摆脱对一行程序的痴迷,你应该缓存
$(this)

这是小提琴:


p.S.与DOM的任何交互都非常昂贵。在处理一大组数据时,建议您首先从DOM中分离元素,进行操作,然后将其添加回DOM。因此,对于performance nirvana,您应该在操作表之前从DOM中删除它:

var $table = $('.table').detach();

$table.find('.A').each(function() {
    var $this = $(this);
    $this.prop('class', 'C').append( $this.next().remove().children() );
});

// Insert the table back into the DOM.
// Since I don't know your DOM structure, I can't help you out with this.
// You'll have to figure it out on your own.

最后,这里是提琴:

似乎只有这些类,所以我只需调用
.prop('class','C')
。嗨,约瑟夫,实际上有丢失的A和B类。。。最后我想要的是所有的C类…@Simpledog-不跟随你。这正是我的建议:嗨,阿德内奥,谢谢你,但似乎把所有的A和B都放在一个C类中。。。我需要的是将每个A和B组合成C,这样就可以得到C类中的所有tr了。@Simpledog-也在我的答案中添加了这一点。
$('.A').each(function() {
    var $this = $(this);
    $this.prop('class', 'C').append( $this.next().remove().children() );
});
var $table = $('.table').detach();

$table.find('.A').each(function() {
    var $this = $(this);
    $this.prop('class', 'C').append( $this.next().remove().children() );
});

// Insert the table back into the DOM.
// Since I don't know your DOM structure, I can't help you out with this.
// You'll have to figure it out on your own.