2017-03-10 63 views
1

我需要您的幫助,我正在工作。我創建了一個HTML表,其中有7個類別(7 tr's)。每個tr有2個td's,一個是類別名稱,另一個是輸入複選框。因此,如果用戶選擇例如1,3,7(第一類複選框,第三類複選框等),將會創建一個javascript數組,如order = [1, 3, 7];使用jQuery根據訂單數組重新排序表的表格tr

所以我希望(在頁面重新加載時)使用jQuery腳本將這些選定的tr移動到表頂部。

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)); 
}) 

回答

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 
}) 
+0

感謝您的回答! – GeoDim

+0

歡迎您 –

1

你想使用的是prepend()。 這會將elem插入表格的開頭。

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

感謝您再寄一次相信我找到了解決辦法! – GeoDim

相關問題