jQuery sortable - 将元素排序过去

时间:2017-03-28 08:43:55

标签: jquery sorting

如果条件基于当前排序元素“后面”的元素匹配,我试图阻止排序。

<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-job具有相同的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");
    }
}

1 个答案:

答案 0 :(得分:1)

您需要使用update事件而不是sort:

$("#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