私は並べ替え可能な順序付きリストを使用しており、以下に基づいてデータベースを更新しています:
- 新しいアイテムをリストにドラッグすると、「受信」イベントが呼び出されてデータベースの挿入が行われます
- リストをソートすると、データベース内の表示順序が更新されます。
「更新」イベントと「受信」イベントはどちらもソート可能の一部であり、それぞれが ajax ポストを (非同期で) 実行するように設定されているため、これらのイベントの順序を制御することはできません。「更新」イベントの前に「受信」イベントを起動して完了する必要があります。
私の考えは、受信イベント内から更新イベントをアンバインドしてから、更新イベントを再バインドするか手動で呼び出すことでしたが、動作させることができません。
私はjqueryの初心者なので、どんな助けでも大歓迎です!!!
前もってありがとう、チャド
$("#myMovieListItems").sortable({
receive: OnReceive,
update: OnSortableUpdate,
placeholder: 'ui-state-highlight',
containment: 'document',
revert: true
});
function OnReceive(event, ui) {
//Disable the update event and manually call it on success of this event
$("#myMovieListItems").unbind("update");
//Set ID of new list element with it's original value
var newItem = $(this).data().sortable.currentItem;
newItem.attr('id', $(ui.sender).attr('id'));
//Get Data to pass to AJAX method
droppedID = newItem.attr('id');
droppedName = $.trim(newItem.first().contents().filter(function () {
return this.nodeType == 3;
}).text());
messageContainer.html(progressMessage);
source = "Facebook";
$.ajax({
type: 'POST',
url: GetSiteRoot() + 'DesktopModules/Incite/MovieRotation/Handlers/Sortable.asmx/InsertMovie',
data: '{strMovieName: \'' + droppedName + '\', intMovieListID: \'' + movieListID + '\', strSource: \'' + source + '\', strSourceID: \'' + droppedID + '\'}',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: OnAddMovieSuccess,
error: OnSortableUpdateError
});
}