如果我正确理解您的问题,基本上您只需要1条特定信息即可完成此操作:表中行(用户正在排序)的初始位置。
有不同的方法来获得它,但最简单的方法可能是简单地为每一行设置一个数据属性,以在生成表时保存该行的初始位置。
例子:
$.each($YOURTABLE.children(), function(idx, val) { val.data('position', idx);});
现在,您需要做的就是在sortstop事件上,获取该值并将其与该行的新位置进行比较:
$YOURTABLE.bind('sortstop', function(event, ui) {
//$(ui.item[0]) selects the user-selected row
var oldPosition = $(ui.item[0]).data('position'),
newPosition;
//get row's new position
$.each($YOURTABLE.children(), function(idx, val) {
if($(val) === $(ui.item[0]))
newPosition = idx; //store new position
}
//now compare
if(oldPosition > newPosition)
////alert user row (oldPosition) moved up
else if(oldPosition < newPosition)
////alert user row (oldPosition) moved down
//refresh all row positions using first code example
}
});
希望这应该为您指明正确的方向。