これで、行を選択して上下に移動できます。イベントリスナーは次のとおりです。
$(".moveUpPlaylist").click(function () {
moveSelected("up");
});
$(".moveDownPlaylist").click(function () {
moveSelected("down");
});
そして、実際の関数は次のとおりです。
function moveSelected(direction){
var arr = jQuery('#table_playlist tbody tr.row_selected');
for(var i=0; i<arr.length; i++) {
var tr = arr[i];
var row = jQuery(tr); // row to move.
var prevRow;
if(direction === "up")
prevRow = jQuery(tr).prev();
else
prevRow = jQuery(tr).next();
/* already at the top? */
if(prevRow.length==0){ break; }
moveDataUp(row, prevRow);
moveVisualSelectionUp(row, prevRow);
}
}
/* the visual stuff that show which rows are selected */
function moveVisualSelectionUp(row, prevRow){
row.removeClass("row_selected");
prevRow.addClass("row_selected");
}
/* move the data in the internal datatable structure */
function moveDataUp(row, prevRow){
var movedData = _tablePL.fnGetData(row[0]).slice(0); // copy of row to move.
var prevData = _tablePL.fnGetData(prevRow[0]).slice(0); // copy of old data to be overwritten by above data.
// switch data around :)
_tablePL.fnUpdate(prevData , row[0], 0, false, false);
_tablePL.fnUpdate(movedData , prevRow[0], 0, true, true);
}
したがって、行をページの一番下に移動すると問題が発生します。テーブルの同じページ内でのみ移動できます。ページの下部または上部にある場合、ページ間を移動するようにするにはどうすればよいですか?