JQueryUIの操作中に問題が発生しました。私が達成しようとしているのはこれです:
- オブジェクトを含むソート可能なリスト(
.form_container
)があります。それらの位置が変更されると、ajax呼び出しはDBを更新します。 - このリストの外に、「テキストアイテム」(
.create_item
)があります。それらのアイテムが並べ替え可能なリストにドロップされているときに、コンテンツを取得するajax呼び出しを行い、単純なアイテムをオブジェクトに変換できるようにします。 - 次に、新しいオブジェクトが追加されたので、ajaxが位置を呼び出すように要求します。しかし、新しいオブジェクトが正しくロードされる前ではありません。
私は十分に明確であることを願っています...
だから最初に、私はそのようなことをすることについて
最初の試み :
$(".create_item").draggable({
containment: 'window',
connectToSortable: ".form_container",
helper: "clone",
});
$(".form_container").droppable({
accept: ".create_item",
tolerance: 'fit',
over: function(event,ui) {
// Something here
},
drop: function(event,ui) {
// Ajax calls that changes my item into an object
}
});
$(".form_container").sortable({
axis: "y",
containment: ".form_container",
revert: true,
update: function(event, ui){
// Ajax calls that update positions in DB
}
});
問題は、ドロップconnectToSortable
イベントもトリガーするため、このイベントが2回呼び出され、問題が発生することです。
そこで、SOFに関する誰かのアドバイスに従い、コードをそのようなものに変更しました。
2回目の試み:
$(".create_item").draggable({
containment: 'window',
connectToSortable: ".form_container",
helper: "clone",
});
$(".form_container").droppable({
accept: ".create_item",
tolerance: 'fit',
over: function(event,ui) {
// Something here
}
// No more drop function
});
$(".form_container").sortable({
axis: "y",
containment: ".form_container",
revert: true,
update: function(event, ui){
// Ajax calls that update positions in DB
},
receive: function(event,ui) {
// Ajax calls that changes my item into an object
}
});
問題は、受信イベントが終了する前に更新イベントがトリガーされ、アイテムが適切に適切なオブジェクトに変換されていないことです。
それがすべてです、誰かが私を助けることができますか?