1

我有一个从 .net 应用程序填充的表,该应用程序产生以下内容...

<table>
<tbody>
...
<tr>...anything below...
  <table>
  <tbody id="blahlkjasdblah">
    <tr><td> 
    lots of custom content
    </td></tr>
  </tbody>
  </table>
</tr>
<tr>...anything below...
    <div id="something">
    <table id="othertable">
    <tbody>
      <tr><td>
      lots of other custom content that is different
      </td></tr>
    </tbody>
    </table>
    </div>
</tr>
</tbody>
</table>

反转**these first two parent only** <tr> NOT NESTED TABLES OR TR 块的最佳方法是什么,这样底部的那个在第一个的顶部?

谢谢

4

5 回答 5

9

使用[].reverse方法。

[].reverse.call($("#myTable > tbody > tr")).appendTo("#myTable > tbody");

jsFiddle

或者把它变成一个 jquery 插件:

$.fn.reverse = [].reverse;
$("#myTable > tbody > tr").reverse().appendTo("#myTable > tbody");
于 2013-05-23T15:31:51.890 回答
7
 var $body = $('tbody');    
 var list = $body.children('tr');
 $body.html(list.get().reverse());

演示--> http://jsfiddle.net/kYwk9/

于 2013-05-23T15:31:35.623 回答
3
table = $('tbody');
table.children().each(function(i,li){table.prepend(li)});
于 2013-05-23T15:31:46.153 回答
3

最好的方法是首先更改此表的生成方式。我想目前这是基于通过元素列表的迭代在服务器端完成的。相反,切换到使用 AJAX 调用来收集此元素列表的客户端呈现,以便 javascript 可以访问它。创建必要的模板代码以在表中呈现列表。当您想要对行重新排序时,对元素列表本身执行操作,然后重新运行模板代码。

于 2013-05-23T15:33:27.360 回答
2

尝试这个:

tbody = $('tbody');
tbody.children().each(function(i,tr){
    tbody.prepend(tr);
});

它遍历每个tr元素并将.prepend()其发送到tbody导致它们全部被反转的结果。

这是一个工作版本:http: //jsfiddle.net/Ybyjx/

于 2013-05-23T15:32:04.833 回答