次のコードを使用すると、ページ上で要素をドラッグアンドドロップでき、ドロップが成功すると、要素のIDを渡すsaveRatingsというメソッドが実行されます。
$('.draggable').draggable({
revert: true
});
$('.droppable').droppable({
drop: function( event, ui ) {
draggedID = ui.draggable.attr("id");
droppedID = $(this).attr("id");
Global.showLoader('Saving...');
quiz1.saveRatings(draggedID, droppedID);
}
});
計画では、ドロップが正常に行われると、ドラッグされたアイテムが削除され、ドロップされた要素からドロップ可能なクラスが削除されて、他の要素もそこにドロップされないようになります。
saveRatings: function ( choiceId, ratingId ) {
// Hide the dragged choice
$('div#' + choiceId).hide();
// Remove droppable behaviour
$('div#' + ratingId).removeClass('ui-droppable');
$('div#' + ratingId).removeClass('droppable');
$('div#' + ratingId).addClass('done');
}
削除部分はクラスの削除と同様に正常に機能しますが、要素から他のクラスをドロップすることはできます...要素からドロップ可能クラスとuiドロップ可能クラスを削除したとしても...
これが機能しない理由はありますか?フルコードベースがかなり大きいため、フィドルを表示することはできません(ただし、これに直接影響することはありません)。ただし、上記の例では、解決策として十分な問題を説明しているはずです。