6

jqueryuiの簡単な例があります。基本的に私はアイテムのリストをしなければなりません、それぞれはソート可能です。そして、私が達成したいのは次のとおりです。同じリストの並べ替えをキャンセルします。たとえば、リスト1の位置1の要素をクリックしてから、位置6にドラッグしてドロップします。それを防ぎたいのですが、リスト2の要素を削除すれば、問題ありません。

自分の要求に合わせるために、指定する方法がわかりません。ConnectWithは十分ではないようです:

$("#sortable").sortable({
    connectWith: [$('#sortable2')]
});

$("#sortable2").sortable({
    connectWith: [$('#sortable')]
});

次に例を示します。

http://jsfiddle.net/sQeZE/3/

4

2 に答える 2

2

これはあなたが探しているものと正確に一致receiveしないかもしれませんが、イベントとstopイベントにバインドすることができます(それらはこの順序でトリガーされます)。 receiveリストアイテムが別のリストから受信されたことを示します。これがトリガーされると、ソートのブロックを一時的に解除できます。 stop常に並べ替えをブロックしようとします。

var blocksort = true;
//Using jQuery 1.6.4, but use `.on` when available
$("#sortable, #sortable2").bind('sortreceive', function () {
    blockSort = false;
}).bind('sortstop', function (e) {
    if (blockSort) {
        e.preventDefault();
    }
    blockSort = true;
});

http://jsfiddle.net/sQeZE/5/

于 2013-01-21T15:45:35.203 に答える
1

1つのオプションは、次のように、リストの包含を他のリストに制限することです。

$("#sortable").sortable({
    connectWith: [$('#sortable2')],
    containment: $('#sortable2') });

$("#sortable2").sortable({
    connectWith: [$('#sortable')],
    containment: $('#sortable') });

これにより、#sortableのアイテムはリスト内でのみ並べ替えることができ#sortable2、その逆も可能になります。

于 2013-01-21T15:39:24.123 に答える