我找到了这个函数here,它几乎完全符合我的需要。该函数遍历表的第一列,并且行合并类似的值。然后,它遍历下一列,并且行也合并这些值,同时考虑到它之前的列的合并。这样,它完全符合我的需要。
function MergeCommonRows2(table, firstOnly) {
var firstColumnBrakes = [];
for (var i = 1; i <= table.find('th').length; i++) {
var previous = null, cellToExtend = null, rowspan = 1;
table.find("td:nth-child(" + i + ")").each(function (index, el) {
if (previous == $(el).text() && $(el).text() !== "" && $.inArray(index, firstColumnBrakes) === -1) {
$(el).addClass('hidden');
cellToExtend.attr("rowspan", (rowspan = rowspan + 1));
} else {
if (firstOnly == 'first only') {
if (i === 1)
firstColumnBrakes.push(index);
} else {
if ($.inArray(index, firstColumnBrakes) === -1)
firstColumnBrakes.push(index);
}
rowspan = 1;
previous = $(el).text();
cellToExtend = $(el);
}
});
}
}
但是,我希望编辑该函数以考虑类。换句话说,我希望编辑该函数以首先检查要合并的两行的类。并且,即使它们具有相同的值,如果它们具有不同的类,则不合并行。我试图编辑上面的功能尽可能多,但无济于事。
更新
我编辑代码的尝试非常粗糙。本质上,我在代码if
之前添加了一个hidden
类,然后说,如果previous.getClass = current.getClass
,只有那时才会进入隐藏类的if语句。
Here is the fiddle。我想点击合并按钮,因为&#34;点击我&#34;单元格之间有不同的类别,我不希望它们合并。