Javascript 对表进行排序时jQuery append()上的奇怪行为

Javascript 对表进行排序时jQuery append()上的奇怪行为,javascript,jquery,Javascript,Jquery,我正在寻找一种方法来对非常复杂的表进行排序,发现这种方法非常有效: (完整代码如下: ) 我的html代码是: <table> <thead> <tr> <th>string</th> </tr> </thead> <tbody> <tr> <td>C</td> </tr> &l

我正在寻找一种方法来对非常复杂的表进行排序,发现这种方法非常有效:

(完整代码如下: )

我的html代码是:

<table>
  <thead>
    <tr>
      <th>string</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>C</td>
    </tr>
    <tr>
      <td>B</td>
    </tr>
    <tr>
      <td>A</td>
    </tr>

  </tbody>
</table>

一串
C
B
A.
我的js代码是:

$('th').click(function() {  
  var table =  $(this).parents('table').eq(0);
  var rows = table.find('tr:gt(0)').toArray().sort(comparer($(this).index()));
  for (var i = 0; i < rows.length; i++) {
    console.info("== before append, rows count: " + $(table).find('tr').size() )
    // WHY doesn't this "append" increase the total tr size ? 
    table.append(rows[i]);    
    console.info("== after append, rows count: " + $(table).find('tr').size() )    
  }
})

function comparer(index) {  
  return function(a, b) {      
    var valA = getCellValue(a, index),
      valB = getCellValue(b, index);
    return $.isNumeric(valA) && $.isNumeric(valB) ?  valA - valB  : valA.localeCompare(valB)  ;
  }
}

function getCellValue(row, index) {
  return $(row).children('td').eq(index).html();
}
$('th')。单击(函数(){
var table=$(this).parents('table').eq(0);
var rows=table.find('tr:gt(0)').toArray().sort(比较器($(this.index()));
对于(变量i=0;i
这个函数(对表进行排序)工作得很好,但我只是想知道,为什么“append()”函数不增加“tr”计数,而没有地方“删除”任何“tr”


非常感谢

从jQuery
追加

您还可以在页面上选择一个元素并将其插入到另一个元素中:

$(“.container”).append($(.h2”)

如果以这种方式选择的元素被插入到DOM中其他位置的单个位置,它将被移动到目标中(而不是克隆)


因此,元素实际上只是被洗牌,而不是被创建/销毁,因为您实际上并没有附加“tr”,您只是找到已经存在的元素,将它们放入数组中,并对它们进行排序。实际上,您并没有告诉代码在表中附加任何“tr”