通过jQuery删除重复的<tr>。

6

我有一个动态绑定的表格:

<table id="test">
   <tr>
      <td>test1
      <td>
   </tr>
   <tr>
      <td>test2
      <td>
   </tr>
   <tr>
      <td>test1
      <td>
   </tr>
   <tr>
      <td>test2
      <td>
   </tr>
</table>

我想要删除重复的表格行,生成以下结果。
<table id="test">
   <tr>
      <td>test1
      <td>
   </tr>
   <tr>
      <td>test2
      <td>
   </tr>
</table>

我试图通过点击 btnRearrange 按钮来实现这个目标。

 $('#btnRearrange').bind("click", function() {
   // want some help hear
 });

感谢您的选择。
3个回答

25
尝试 -

var seen = {};
$('table tr').each(function() {
  var txt = $(this).text();
  if (seen[txt])
    $(this).remove();
  else
    seen[txt] = true;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="test">
  <tr>
    <td>test1
      <td>
  </tr>
  <tr>
    <td>test2
      <td>
  </tr>
  <tr>
    <td>test1
      <td>
  </tr>
  <tr>
    <td>test2
      <td>
  </tr>
</table>

代码取自此问题,并且略作更改 - JQuery:删除重复元素?


非常出色且高效的答案。我使用了稍微修改过的您的代码来显示一个带有多个筛选器的列表。因此,它看起来更像是 $rows = $('table tr.column-4'); $rows.hide() $rows.each(function() { if ($this.text() == filter && !seen[txt] { $this.show()}}); - danielson317

3
$('#btnRearrange').bind("click", function() {
    var contents = {}, text;
    $("#test td").each(function() {

        text = $(this).text();

        if( !( text in contents ) ) {
            contents[text] = true;
        }
        else {
            $( this.parentNode ).remove();
        }

    });
});

jsfiddle: http://jsfiddle.net/jKs4k/


1

给你:

$('#btnRearrange').bind("click", function() {

$("#test td").each(function () {
    var tdText = $(this).text();

    $("#test td")
        .filter(function () { 
            return tdText == $(this).text(); 
        })
        .not(":first")
        .remove();

});
});

在这里试一试:

http://jsfiddle.net/MAnLM/3/


你能看一下这个问题吗?http://stackoverflow.com/questions/14633435/jquery-delete-almost-same-table-rows/14635390 - brabertaser19

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接