この回答のように、複数のjquery uiソート可能なリストが接続されており、アイテムが1つのリストで受信されるたびに手動でN個のアイテムにバランスが取られます: https://stackoverflow.com/a/13754827/27497
ただし、(jquery の .appendTo() または .prependTo() を使用して) リスト間でアイテムを手動で移動すると、これらの変更は jquery ui ソート可能ライブラリによって検出されないため、「キャンセル」コマンドを使用して状態を元に戻しても、手動で移動したアイテムは元のリストに戻されません。
$(".my-lists-selector").sortable("cancel"); を呼び出したときに、並べ替え可能なライブラリがアイテムを元に戻すことができるように、アイテムをあるリストから別のリストに手動で移動する適切な方法はありますか?
.sortable("cancel") を呼び出したときにアイテムが元に戻らない例を次に示します。アイテムをあるリストから別のリストに移動した後、赤いキャンセル ボタンをクリックするだけです: http://jsfiddle.net/SUffL/3/
$(function() {
$( ".connectedSortable" ).sortable({
connectWith: ".connectedSortable",
update: function(event, ui) {
var ul1 = $("#ul1 li");
var ul2 = $("#ul2 li");
var ul3 = $("#ul3 li");
checkul1(ul1, ul2, ul3);
checkul2(ul1, ul2, ul3);
checkul3(ul1, ul2, ul3);
}
}).disableSelection();
$("#cancel-btn").click(function(){
$(".connectedSortable").sortable("cancel");
});
});
function checkul1(ul1, ul2, ul3) {
if (ul1.length > 5) {
ul1.last().prependTo(ul2.parent());
}
}
function checkul2(ul1, ul2, ul3) {
if (ul2.length > 5) {
if (ul1.length < 5) {
ul2.first().appendTo(ul1.parent());
} else {
ul2.last().prependTo(ul3.parent());
}
}
}
function checkul3(ul1, ul2, ul3) {
if (ul3.length > 5) {
ul3.first().appendTo(ul2.parent());
checkul2(ul1, ul2, ul3);
}
}