使用sortable跨行拖拽的时候中间单元自动上调导致排序混乱怎么解决
时间: 2023-12-10 07:05:23 浏览: 55
在使用 Sortable 进行跨行拖拽排序时,中间单元格自动上调可能会导致排序混乱。一种解决方法是使用 Sortable 的 `swapThreshold` 选项来控制拖拽时自动上调的距离,以及使用 `onEnd` 回调函数来手动调整排序。
具体实现步骤如下:
1. 设置 `swapThreshold` 选项为一个较大的数值,比如 100,这样在拖拽时自动上调的距离就会变得很大,减少了自动上调的可能性。
```javascript
Sortable.create(list, {
swapThreshold: 100, // 设置自动上调距离为 100 像素
...
});
```
2. 在 `onEnd` 回调函数中,手动调整排序,将拖拽的元素插入到目标位置之前或之后,避免自动上调带来的混乱。
```javascript
Sortable.create(list, {
swapThreshold: 100,
onEnd: function (evt) {
var itemEl = evt.item; // 拖拽的元素
var toEl = evt.to; // 目标容器
var newIndex = evt.newIndex; // 目标位置的索引
// 手动调整排序,将拖拽的元素插入到目标位置之前或之后
if (evt.oldIndex < newIndex) {
toEl.insertBefore(itemEl, toEl.children[newIndex + 1]);
} else {
toEl.insertBefore(itemEl, toEl.children[newIndex]);
}
},
...
});
```
这样,在使用 Sortable 进行跨行拖拽排序时,就可以避免中间单元格自动上调导致的排序混乱了。
阅读全文