Jquery ui 以编程方式对jquery ui排序是否可排序?

Jquery ui 以编程方式对jquery ui排序是否可排序?,jquery-ui,jquery-ui-sortable,Jquery Ui,Jquery Ui Sortable,我在display:flex父div中有一堆div。父div可以通过jqueryui的sortable功能进行排序 除了允许用户排序之外,我还想添加一些按钮来进行动画排序 例如,使用此HTML: <div class="sortable"> <div id="div1"></div> <div id="div2"></div> <div id="di

我在
display:flex
父div中有一堆div。父div可以通过jqueryui的
sortable
功能进行排序

除了允许用户排序之外,我还想添加一些按钮来进行动画排序

例如,使用此HTML:

<div class="sortable">
  <div id="div1"></div>
  <div id="div2"></div>
  <div id="div3"></div>
  <div id="div4"></div>
  <div id="div5"></div>
</div>

我想要一个按钮,当按下时,将动画移动div1之间的div4和div5,移动平稳(事实上,有点不稳定,如果它是用手移动会更好)和移动它通过的所有div,所以它看起来好像是用手移动


使用jquery ui的sortable()可以实现这一点吗?还是最好构建一个自定义解决方案?

考虑以下示例

$(函数(){
功能安排(obj、pre){
obj=$(obj);
var t=$(“[id^='div']:eq(“+pre+”);
对象动画({
顶部:t.位置().顶部+“px”
}, {
持续时间:1000,
步骤:功能(i){
$(此)。位置({
我的:“左上”,
在“左下角”,
of:t,
});
},
完成:函数(){
obj.detach().css(“top”和“).insertAfter(t);
}
});
}
$(“.sortable”).sortable().disableSelection();
$(“#排列”)。单击(函数(){
安排($(“#div1”),3);
});
});
.sortable{
列表样式类型:无;
保证金:0;
填充:0;
位置:相对位置;
}
.可排序分区{
保证金:0 3px 3px 3px;
填充:0.4em;
高度:18px;
}

项目1
项目2
项目3
项目4
项目5

排列
这在可排序的情况下是不可能的。它是UI的一部分,依赖于拖放操作。UI动画和位置可以帮助你做到这一点。这是非常接近的,我想我可以通过在每一个div上动画一秒钟,让它们在它们之间移动来进行跳跃。谢谢嗯,这将比我想象的要复杂,因为在我的场景中,它是一个包装的
display:flex
容器中的100个30px div。当显示时,div可能是5行20行,这意味着对角线动画是一种可能性,我不能只将其设置为下一个div,我需要计算动画的路径以确定下一个div的位置,或者在动画的每一步中查看我结束了哪一个div。另外,我在position()方面有问题.左,我想是因为容器有%左右边距。“我现在正试图弄清楚这一点。@BenHolness我用一个
swap
函数更新了另一个示例,这样您就可以在每个位置循环
flex
会给你一些问题,但是有办法解决。我已经设法克服了flex的定位问题,但是我不能一步一步地使用对角线,但是你的答案基本上符合我的要求,让我走上了正确的道路!谢谢:)