如果条件基于当前排序元素“后面”的元素匹配,我试图阻止排序。
<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");
}
}
答案 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 强>