4

以下のコードは、startイベントでsortablesを完全に無効にするわけではありません。クラスui-sortable-disabledui-state-disabled並べ替え可能な要素を追加しますが、機能を無効にすることはありません。つまり、並べ替え可能要素は無効に見えますが、ドラッグされたアイテムを受け入れ、有効になっているように動作します。

var assignedSortables;
var startDrag = function(event, ui) { 
    assignedSortables.each(function() {$(this).sortable('disable');});
};

var stopDrag = function(event, ui) { 
    assignedSortables.each(function() {$(this).sortable('enable');});
};

assignedSortables = $(".my-sortable-containers").sortable({
    connectWith: '.my-sortable-containers',
    start: startDrag,
    stop: stopDrag
});

これを実行したい理由は、ドラッグ開始時に、ドラッグ中のアイテムがすでに含まれている他の接続されたソート可能ファイルを無効にする必要がある場合があるためです(簡略化するためにロジックを削除しました)。これはバグですか、それとも回避する方法がありますか?

4

2 に答える 2

7

私はちょうど同じ問題に遭遇しました。開始するソータブルで「refresh」メソッドを呼び出すことにより、(実際の場合)無効にするために無効にしたい接続されたソータブルを取得することができました。

したがって、開始コールバック内は次のようになります。

$connectedList.sortable('disable');
$(ui.sender).sortable('refresh');

内部的には、リストは開始イベントがトリガーされる前に接続されたリストと無効にされていないリストのセットを取得し、開始がトリガーされた後にそのリストが変更されるかどうかを確認しないと思います。

于 2011-05-26T20:53:32.727 に答える
4

質問をしたので、jQueryライブラリがこれを「修正」したかどうかを確認していません。代わりに、mousedownイベントとmouseupイベントを使用して無効化と有効化を行いました。

$(".myDraggableContainer").mousedown(functionToDisableTheCorrectSortables).mouseup(functionToEnableSortables);

このようにすると、実際には、受信するソート可能ファイルが完全に無効になります。

于 2010-10-14T16:38:13.420 に答える