使用 SortableJS 禁用其他元素拖动时要推送的项目

Disable items to be pushed while dragging by other elements with SortableJS

提问人:aspirinemaga 提问时间:11/6/2023 更新时间:11/6/2023 访问量:36

问:

我在由项目组成的列表上使用 SortableJs,其中包含固定元素。

我希望固定元素保持在同一个地方。它们不应该被拖来拖去,也不应该被其他元素重新排序/推动。

我不知道该怎么做。实现这一目标的最佳方法是什么?

Sortable.create(document.getElementById('items'), {
  group: 'items',
  animation: 200,
  draggable: '.item',
  filter: '.fixed',
  dropBubble: true,
  onStart: function(e) {},
  onEnd: function(e) {},
  onMove: function(e) {}
});
<script src="https://cdn.jsdelivr.net/npm/[email protected]/Sortable.min.js"></script>
<ul id="items" class="items">
  <li class="item">Item 1</li>
  <li class="item">Item 2</li>
  <li class="item fixed">Fixed at 3</li>
  <li class="item fixed">Fixed at 4</li>
  <li class="item">Item 3</li>
  <li class="item">Item 4</li>
  <li class="item">Item 5</li>
  <li class="item">Item 6</li>
  <li class="item">Item 7</li>
</ul>

JavaScript 可排序的JS

评论


答:

0赞 psdpainter 11/6/2023 #1

看起来你只需要设置:

draggable: '.item:not(.fixed)'

评论

0赞 aspirinemaga 11/6/2023
如果将第 1 个或第 2 个元素拖动到固定元素下方,则固定元素将被推回。无论如何,固定元素都应保持在第 3 位和第 4 位。