2017-03-28 69 views
0

我想阻止排序,如果條件匹配基於元素「後面」當前的排序元素。jQuery sortable - 獲取元素排序過去

<div id="sortable" class="ui-sortable"> 
<div class="queue-job" composite_key="58da0ab7d41e9a1c90e10eae" /> 
<div class="queue-job" composite_key="58da1f25b53d4e06bc149d27" /> 
<div class="queue-job" composite_key="58da0ab7d41e9a1c90e10eae" /> 
<div class="queue-job" composite_key="58da1b96b53d4e06bc149d26" /> 
</div> 

在這種情況下,在0位和第2 div.queue作業具有相同的composite_key(58da0ab7d41e9a1c90e10eae)。預期行爲:如果用戶嘗試對$(「div.queue-job」)[0]進行排序$(「div.queue-job」)[2],應停止排序。

這是我到目前爲止所嘗試過的。但基於初始位置,這是隻得到了兄弟姐妹:

sort: function (e, ui) { 
    if ($(ui.item[0]).attr("composite_key") === $(ui.item[0]).next().attr("composite_key")) { 
      $(this).sortable("cancel"); 
    } 
} 
+0

具有相同的ID? ID必須是唯一的... –

+0

瞭解。這僅用於說明目的。我正在使用商店的一個屬性複合鍵值。 –

+0

添加html代碼不是html圖片 – guradio

回答

1

您需要使用更新事件,而不是那種:

$("#sortable").sortable({ 
update: function (e, ui) { 
    if ($(ui.item[0]).attr("composite_key") === $(ui.item[0]).next().attr("composite_key")) { 
       $(this).sortable("cancel"); 
     } 
    } 
}); 

Working Demo

+0

謝謝。這使我指出了正確的方向。 –