使用jquery按照数组对表格行进行排序?

4

我有一个看起来像这样的表:

<table>
      <tr id="1">
          <td>bla</td>
      </tr>

      <tr id="2">
          <td>bla</td>
      </tr>

       <tr id="3">
          <td>bla</td>
      </tr>

      <tr id="4">
          <td>bla</td>
      </tr>
</table>

我还得到了一个数组,根据这个数组,我应该对这个表格行进行排序,例如数组如下:

array= [3, 4, 1, 2];

有什么提示或想法可以让我用jQuery / JavaScript重新排列行,以匹配该数组?


1
可能重复:JQuery / Javascript重新排序行 - Andreas
2个回答

5

按需要的顺序再次添加它们。当您调用 .append 并且元素已经可见时,它将从当前位置移除。

var order = [3,2,1,4];

$.each(order, function(){
  $("table").append($("#" + this));
})

http://jsfiddle.net/nZ6HJ/


到目前为止,最简单和最有效的解决方案(假设所有行ID都在数组中)。使用$.each来迭代一个简单的数组有点过度,如果性能是一个问题,我会使用一个简单的for循环。 - Fabrício Matté
@FabrícioMatté 请定义“by far”。另外,如果重新排序HTML表格行是任务,则数组循环性能不是问题。 - Tomalak
@Tomalak 抱歉,我想我在阅读你的答案时没有足够的注意力。但是我会为我的性能陈述辩护,仅仅因为你背负着10头大象并不意味着你必须不必要地再背负一头——随着应用程序的增长,它们会逐渐累积。而且我发现for循环更易读,也不会不必要地创建闭包。 - Fabrício Matté
1
@FabrícioMatté 不,我的回答实际上是错误的,这就是我删除它的原因。关于你的类比:如果重新排序表行是10只大象,那么$.each()就是一只蚂蚁。不使用它不会带来任何值得一提的性能提升。 - Tomalak
1
@Tomalak 噢,感谢你提供的 jsperf =]。是啊,有时我必须要记住过早优化是万恶之源。 - Fabrício Matté
显示剩余6条评论

2

jsBin演示

for(i=0; i<array.length; i++){
  $('#'+array[i]).appendTo('table');
}

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