2012-05-25 51 views
3

我有幾個可拖動元素的列表。當用戶將任何元素移動到新位置時,$ .ajax被調用,以便服務器可以記錄元素的位置變化。雖然我可以禁用整個列表的排序,但我真的只想禁用對移動元素的排序,直到$ .ajax收到成功消息。jQuery可排序 - 禁用單個項目

update: function(event, ui) { 
    ui.item.sortable('disable'); 
    $.ajax({options}, success: function() { 
    ui.item.sortable('enable'); 
    }); 
} 

我已經做了很多的研究,到目前爲止,也只能得到整個列表禁用。任何對我做錯的建議,或者這是不可能的?

+1

排序列表會影響該列表中的所有項目,因此在更改記錄之前禁用整個列表是有意義的。您的其他選項可能是將狀態存儲在客戶端並記錄更改一次(例如,通過按鈕單擊)。 – sesser

+2

爲了詳細說明@ randy的評論,您的設計等於將AJAX請求與每個單獨的元素(而不是整個列表)關聯起來。即使有可能(也可能是),您無法保證您的AJAX請求會以與發送順序相同的順序實際到達服務器。您的第二個拖動操作的請求可能會在第一次拖動操作的請求之前被接收和處理,這可能不是您想要的。 –

+0

是的,我理解了這一點,現在可能會考慮到這一點。目前,使用我在下面找到的答案,它工作的很好,直到你turbo拖動你的方式崩潰。 – Langel

回答

3

Sortable的取消設置允許您使用選擇器取消可排序的呼叫。我添加了以下行 -

cancel:'.updating'

...然後我添加和刪除周圍的$就調用的類。

我不知道我昨天怎麼錯過了這一整天。 :D/

相關問題