JQuery删除特定的重复行

时间:2013-06-11 02:23:53

标签: jquery html

我有两个表,我一直在使用此代码删除找到的重复数据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”的副本,或者是否有人有任何其他技术。

感谢任何帮助。

2 个答案:

答案 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;
});

Demo here

它会搜索重复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();

CSS

此外,不需要使用jQuery。您可以使用css隐藏重复的项目:

tbody.off { display: none; }