この例では、 http://jqueryui.com/sortable/#connect-listsを使用して、異なるリストと同じリストの間でアイテムをドラッグ アンド ドロップできます。
同じリストでのドラッグ アンド ドロップを無効にして、異なるリスト間でのドラッグ アンド ドロップのみを許可することはできますか? どうやって?
この例では、 http://jqueryui.com/sortable/#connect-listsを使用して、異なるリストと同じリストの間でアイテムをドラッグ アンド ドロップできます。
同じリストでのドラッグ アンド ドロップを無効にして、異なるリスト間でのドラッグ アンド ドロップのみを許可することはできますか? どうやって?
これは私がここでできる最高のことです:
$("#sortable1, #sortable2").sortable({
connectWith: ".connectedSortable",
stop: function(event, ui) {
if (ui.item[0].parentNode == this) {
$(this).sortable('cancel');
}
}
}).disableSelection();
作業デモ :)
http://jsfiddle.net/UnFdU/1/
recieve
、、start
およびの3つのイベントの背後に小さなロジックを構築しましたstop
。リストが同じリストである場合は常に、ユーザーは別のリストをドロップできない場合は、自分で試してみてください。以下の簡単な説明
ユーザーがドラッグを開始すると、次のように表示されstart
ます。canDropThat = false;
recieve
アイテムが接続リストから削除された場合、つまり受信がトリガーされた場合にのみトリガーされますmake canDropThat = true;
; したがって、ドロップを許可します。
最後stop
に、フラグをチェックし、正しいフラグである場合はドロップを許可し、それ以外の場合は拒否します。
それが原因に合うことを願っています:))
コード
$(function() {
canDropThat = false;
var sortlists = $("#List1, #List2").sortable({
tolerance: 'pointer',
connectWith: '#List1, #List2',
helper: 'original',
scroll: true,
receive: function(event, ui) {
//Run this code whenever an item is dragged and dropped into this list
canDropThat = true;
},
start: function(event, ui) {
canDropThat = false;
},
stop: function(event, ui) {
if (!canDropThat) {
$(this).sortable('cancel');
}
}
}).on('scroll', function() {
sortlists.scrollTop($(this).scrollTop());
});
});