我有两个表,我一直在使用此代码删除找到的重复数据here:
var seen = {};
$('a').each(function() {
var txt = $(this).text();
if (seen[txt])
$(this).remove();
else
seen[txt] = true;
});
如果我不能选择要删除的重复字段,那么我的问题就好了,例如,如果我有这样的布局,它将删除带有class =“off”的tbody或没有,行可以移动,因此可以按任何顺序出现:
<table>
<tbody class="off">
<tr>
<td>somedata</td>
</tr>
</tbody>
<tbody>
<tr>
<td>somedata</td>
</tr>
</tbody>
</table>
我想知道是否有人知道如何修改代码,以便删除始终包含class =“off”的副本,或者是否有人有任何其他技术。
感谢任何帮助。
答案 0 :(得分:2)
以下是您可以使用的that code的改编版本:
var seen = {};
$('tbody').each(function() {
var elmt = {txt: $(this).text(), ref: this};
if (seen[elmt.txt]) {
if ($(seen[elmt.txt].ref).hasClass('off')) {
$(seen[elmt.txt].ref).remove(); seen[elmt.txt].ref = this;
} else {
$(this).remove();
}
}
else
seen[elmt.txt] = elmt;
});
它会搜索重复tbody
内容的所有text()
。如果找到重复的内容,则最好删除off
类的The first tbody will prevail:
<table>
<tbody class="blu"><tr><td>somedata</td></tr></tbody>
<tbody class="off"><tr><td>somedata</td></tr></tbody>
<tbody class="gre"><tr><td>somedata</td></tr></tbody>
</table>
The second tbody will prevail:
<table>
<tbody class="off"><tr><td>somedata2</td></tr></tbody>
<tbody class="gre"><tr><td>somedata2</td></tr></tbody>
<tbody class="blu"><tr><td>somedata2</td></tr></tbody>
</table>
。如果没有,它将删除找到的最后一个。
示例:
{{1}}
答案 1 :(得分:0)
<强> Working jsFiddle Demo 强>
正如你所写:
我想知道是否有人知道如何修改代码,以便删除始终包含
class="off"
的重复。
只需获取.off
类并将其删除:
$('tbody.off').remove();
此外,不需要使用jQuery。您可以使用css隐藏重复的项目:
tbody.off { display: none; }