2015-09-04 73 views
0

我試圖用預先計算的序列排序表。用預先計算的序列重新排序表

所以在下面的例子中,5個項目將被移動到第一個,然後第三個項目將是第二個,依此類推。

我似乎無法操縱sort來實現這一點,是否有可能使用sort

var seq = [5, 3, 2, 1, 4]; 

var table = $('.table'); 
var rows = $('tbody > tr', table); 

rows.sort(function(a, b){ 
    return 0; 
}); 

rows.each(function(index, row){ 
    table.append(row); 
}); 
+0

你需要有該行本身,以配合在東西' seq'數組。 – Barmar

回答

1

不要使用sort,只是環比seq陣列,收集行:

$("#button").click(function() { 
 
    var seq = [5, 3, 2, 1, 4]; 
 

 
    var table = $('table'); 
 
    var rows = $('tbody > tr', table); 
 

 
    var new_rows = []; 
 
    $.each(seq, function() { 
 
    new_rows.push(rows.eq(this - 1)); // subtract 1 because `eq()` is 0-based 
 
    }); 
 
    $.each(new_rows, function() { 
 
    table.append(this); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td>a</td> 
 
    </tr> 
 
    <tr> 
 
    <td>b</td> 
 
    </tr> 
 
    <tr> 
 
    <td>c</td> 
 
    </tr> 
 
    <tr> 
 
    <td>d</td> 
 
    </tr> 
 
    <tr> 
 
    <td>e</td> 
 
    </tr> 
 
</table> 
 
<button id="button">Click to reorder</button>

+0

非常感謝!我細化了它,因爲我實際上並不需要它在數組中,'$ .each(seq,function(){ta​​ble.append(rows.eq(this-1));});' – jdawg

+0

That won'因爲當你將該行附加到表中時,它會改變它後面所有行的位置。 – Barmar

+0

啊,是的,偉大的一點!感謝您的幫助。 – jdawg