使用jQuery重新排序依赖于订单数组的表的tr

时间:2017-03-10 09:47:27

标签: jquery html html-table

我需要你帮助处理我正在工作的事情。我创建了一个HTML表,其中有7个类别(7 tr' s)。每个tr都有2个td,其中一个是类别名称,另一个是输入复选框。因此,如果用户选择例如1,3,7(第一类的第一个复选框,第三类的第三个复选框等),将创建javascript数组,如order = [1, 3, 7];

所以我想(在页面重新加载时)使用tr脚本在表格的顶部移动这些选定的jQuery

HTML表格:

<tbody id="news_body">
<tr id="1">
<td class="categories">World</td>
<td class="category_enabled" style="float: right;"><input type="checkbox" value="1"/></td>
</tr>

<tr id="2">
<td class="categories">Sports</td>
<td class="category_enabled" style="float: right;"><input type="checkbox" value="2"/></td>       
 </tr>
.
.
.
<tr id="7">
<td class="categories">Economy</td>
<td class="category_enabled" style="float: right;"><input type="checkbox" value="7"/></td>      
</tr>
</tbody>

我已经尝试了这一点,但tr显示在表格底部:

var order = [1, 3, 7];
$.each(order, function(){
     $("#news_body").append($("#" + this));
})

任何想法都会有所帮助..

解决方案(更新):

$.each(categories, function(){
   $("#news_table").append($("#" + this));
})

2 个答案:

答案 0 :(得分:1)

您要使用的是prepend()。 这会将elem插入表格的开头。

var order = [1, 3, 7];
$.each(order, function(index, value){
    $("#news_body").prepend($("#" + this));
})

答案 1 :(得分:1)

尝试此审核

jQuery(document).ready(function($) {

var order = [1, 3, 7];
reverse_order=order.reverse();// reversing array so when prepending, checkboxes will display in right order
$.each(reverse_order, function(key,value){

    var selected=$("#" + value);// keep the original tr
    $("#" + value).remove();// remove from table 
     $("#news_body").prepend(selected);// then prepend it 
})