我有许多connectedSortable列表,我还创建了一个垃圾箱<div>
,它可以接收一个丢弃的项目(使用drop:
事件),这很棒。
然后从数据库中删除此项目。
我遇到的问题是,当一个项目被放入bin并从数据库中删除时,stop:
事件将触发自该项目被删除后现在已更改的列表。 stop事件序列化item id列表并使用新订单更新数据库。但是它仍然会序列化已删除的ID。
e.g。
<li id="1">Item 1</li>
<li id="2">Item 2</li>
<li id="3">Item 3</li>
<li id="4">Item 4</li>
然后,如果我将item 1
拖到bin中,则排序后的序列化数据为:
item[]:1 //shouldn't be serialized
item[]:2
item[]:3
item[]:4
我的垃圾箱ajax是:
$('.wastebin').droppable({
accept: 'li',
helper : 'clone',
drop: function(event, ui) {
var data = $.param({order: ui.helper.attr("data-order")});
data += '&'+ $.param({dpmt_id: ui.helper.attr("data-dpmt")});
data += '&'+ $.param({pjct_id: ui.helper.attr("data-pjct")});
console.log("Binned: " + data);
$.ajax({
type: "POST",
url : "project_tasks.php?task=delete_project",
data: data,
success: function(){
toastr["success"]("Project has been deleted!");
ui.helper.remove();
},
error: function(){
toastr["Warning"]("Failed to delete project.");
}
});
}
});
停止活动:
stop: function(event, ui) {
var data = $(this).sortable('serialize');
var dpmt = $(this).data('dpmt');
ui.item.attr('data-dpmt', dpmt);
data += '&'+ $.param({dpmt_id: $(this).data('dpmt')});
data += '&'+ $.param({pjct_id: ui.item.data('pjct')});
$.ajax({
type: "POST",
url : "project_tasks.php?task=update_ordering",
data: data,
success: function(){
toastr["success"]("New order updated");
}
})
});
我仍然在用jQuery找到我的脚,所以我只是想念一些愚蠢的东西。
由于