droppable要素の 'data'メソッドを使用して、今まで受け入れたdraggablesへの参照を格納できます。だから、例えば、あなたがこのような何か行うことができます。基本的にこれが何をしているか
<script language="javascript">
$(function() {
$('.droppable').droppable({
greedy:true,
[...other:options],
over: function(event,ui) {
var already_dragged = $(this).data('mysite.dropped_items');
if($.inArray(ui.draggable.id,already_dragged) >= 0) {
$(this).droppable('disable');
}
},
out: function(event,ui) {
$(this).droppable('enable');
},
drop: function(event,ui) {
var already_dragged = $(this).data('mysite.dropped_items');
if($.inArray(ui.draggable.id,already_dragged) < 0) {
already_dragged.push(ui.draggable.id);
$(this).data('mysite.dropped_items',already_dragged);
}
}
}).data('mysite.dropped_items',new Array());
});
</script>
<div id="droppable1" class="droppable"></div>
<div id="droppable2" class="droppable"></div>
<div id="draggable_1" class="draggable"></div>
をこれです...
私たちは、「個人用サイトと呼ばれる配列を添付するjQueryのデータ・オブジェクトを使用しました.dropped_items 'を各$('。droppable ')要素に追加します。これらのdroppablesの1つ上にdraggableを置くたびに、システムはそのdroppableのidがすでに 'mysite.dropped_items'配列に入っているかどうかをチェックします。そうであれば、ドロップブルは無効になります。そうでない場合は、すべてが期待通りに機能します。
私はこの正確なコードブロックをテストしていませんが、理論的にはうまくいくはずです。私はそれが助けて欲しい
遅いコンピュータまたは何らかの理由でコンピュータがちょっとした場合、これは機能しません。いくつかの例では、ドラッグテーブルを受け入れるのに1秒もかかることがあります。各ドラッグ可能なものに一意の識別子を動的に付けることを検討してください。あなたが費やす余分な5分分の価値があります。 – KyleFarris
それはカイルを動作させません。私のdraggableが '#boo'であると仮定します。 draggableが2つのdroppablesに落とされると、両方がユニークなidenitifier '#boo'を持つdraggableのイベントを受け取ります。 1つ以上のdrappableの上にあっても、一度にドロップできるのはドラッグ可能なものだけです。 – Hady