问题(jsFiddle demo of the problem)

当与jQuery sortable中的revert方法结合使用时,我在cancel设置上遇到了一些麻烦。如jQuery Sortable documentation中所述,cancel方法指出:



这在stopreceive回调中都可以正常工作,但是,如果我将revert持续时间添加到可排序的连接列表中,它将开始变得很有趣(请参阅jsFiddle here)。

理想情况下,取消后就不会发生revert,或者在更理想的世界中,它会优雅地恢复到其原始位置。有什么想法可以使revertcancel发挥得更好吗?

预期的

  • 从左侧列表拖动到右侧列表
  • 放置物品
  • 项目会设置为原始位置的动画-或-立即移至
  • 原始位置

    实际的
  • 从左侧列表拖动到右侧列表
  • 放置物品
  • 项目会动画到新的位置,并假设sortable成功
  • 项立即转移到原始位置,因为可排序已取消

  • 澄清度
    revert属性将项目移动到成功后该项目将放置的位置,然后由于revert方法之前cancel发生而立即移回到原始位置。有没有一种方法可以更改生命周期,因此,如果执行了cancel方法,而不是revert,则该项目会立即返回其原始位置?

    最佳答案

    我在这里为您创建了一个演示:

    the jsfiddle code

    它似乎产生了您期望的输出。

    我从这里更改了接收回调方法:

    $(ui.sender).sortable('cancel');
    

    对此:
    $(ui.sender).sortable( "option", "revert", false );
    

    希望这是您所期望的。

    09-25 16:25