11

JQuery ソータブルを使用しています。フォームのリセットと同様に、並べ替え可能なコントロールを元の状態に戻すことができるかどうかを知りたいです。「キャンセル」オプションは、すべてではなく最後のソート試行にのみ影響するようです。

4

4 に答える 4

23

私は個人的にこのようにするのが好きです:

$("#sortable").sortable({config...});
var cache = $("#sortable").html();

リセット時

$("#sortable").html(cache).sortable("refresh");

.clone() と .children() 、さらには $("#sortable > *) を使用してみましたが、.html() をキャッシュするのが最適なオプションであることがわかりました。

私の状況では、2 つの接続されたリストがあります。ユーザーが並べ替えまたは削除できる現在のアイテムを含むものと、ユーザーが取得して「現在のアイテム」リストに追加できる使用可能なアイテムの別のリスト。すべてを元の状態にリセットする方法が必要でした。上記はうまく機能します。

于 2013-02-13T14:59:14.260 に答える
4

これは簡単な方法です

$( "#sortable" ).sortable( "cancel" );
于 2016-01-12T10:01:09.457 に答える
2

元の要素の順序への参照を保存し、それを使用して並べ替えます。

var sortableElements = $("#sortable div");
$("#sortable").sortable();

元の並べ替え順序を復元する場合は、div を #sortable 要素に追加するだけです。

$("#sortable").append(sortableElements);
于 2012-12-12T18:58:54.177 に答える
1

ドキュメントの準備ができたら親のコピーをキャッシュし、リセット時に復元できます。

たとえば、<ul class="parent">並べ替え可能な要素が次の場合:

var sortableCache;
$(document).ready(function() {
    ...
    $('ul.parent').sortable({ ... });
    ...
    sortableCache = $('ul.parent').clone(true);
});

リセットすると、次のことができます。

$('ul.parent').replaceWith(sortableCache);
于 2012-12-12T18:59:27.650 に答える