我正在使用jQuery Sortable plugin。jQuery可排序的更新數據未被序列化
查看關於如何序列化數據的基本示例我有以下代碼。
<div class='span4'>
<ol class='serialization vertical'>
<li data-id='1' data-name='Item 1' data-status='1'>Item 1 <span class="status">toggle</span></li>
<li data-id='2' data-name='Item 2' data-status='1'>Item 2 <span class="status">toggle</span></li>
<li data-id='3' data-name='Item 3' data-status='1'>Item 3 <span class="status">toggle</span></li>
<li data-id='4' data-name='Item 4' data-status='1'>Item 4 <span class="status">toggle</span></li>
<li data-id='5' data-name='Item 5' data-status='1'>Item 5 <span class="status">toggle</span></li>
<li data-id='6' data-name='Item 6' data-status='1'>Item 6 <span class="status">toggle</span></li>
</ol>
</div>
var group = $("ol.serialization").sortable({
group: 'serialization',
delay: 500,
onDrop: function (item, container, _super) {
var data = group.sortable("serialize").get();
var jsonString = JSON.stringify(data, null, ' ');
console.log(jsonString);
$('#serialize_output2').text(jsonString);
_super(item, container)
}
});
我想允許用戶切換每個項目的狀態,所以我已經在
jQuery(document).on("click", ".status", function (event) {
var status = $(this).closest("li").attr("data-status");
if(status == 1) {
$(this).closest("li").attr('data-status','0');
}
else {
$(this).closest("li").attr('data-status','1');
}
});
還補充如果我拖放列表項的console.log將返回之前單擊切換正確的狀態(1或0)。
但是,在拖放完成後,如果嘗試單擊以更新狀態,請再次拖放console.log,以返回列表的正確順序,但不是最新的狀態。
我需要在這裏做些什麼來確保序列化的數據反映了丟棄時數據屬性的值?
感謝您的詳細回覆和示例,這有助於很多 – ak85