【问题标题】:JQuery UI sortable: restore position based on some conditionJQuery UI sortable:根据某些条件恢复位置
【发布时间】:2011-02-09 07:55:29
【问题描述】:

我调用sortable.stop() 进行 ajax 调用以在拖放操作后存储一些数据。

当ajax调用返回错误(应用程序逻辑错误或网络问题)我想将拖动的元素移动到它的原始/开始位置,我该如何实现?

场景应该是

  1. 用户将 A 拖到 B
  2. sortable.stop() 事件被调用,它触发了一个 ajax 调用
  3. ajax 调用返回错误
  4. stop() 事件中,我们得到了 ajax 错误
  5. 将 A 移动到其原始位置
  6. 用户再次将 A 移动到 B
  7. 一切正常
  8. A 仍留在 B 中的新位置

步骤 6-8 表明可以进行连续拖动并且必须忘记之前的错误。

【问题讨论】:

    标签: jquery jquery-ui jquery-ui-sortable


    【解决方案1】:

    看看.sortable('cancel');像这样:

    var list = $('#some-list')
    list.sortable(
    {
        // Some options.
        stop: function()
        {
            $.post('some-url', someData, function()
            {
                if (somethingWentWrong)
                {
                    list.sortable('cancel');
                }
            });
        }
    });
    

    【讨论】:

    • 在 stop() 回调下它不起作用,所以我使用了 receive() 而不是 stop() 并使用 $(ui.sender).sortable('cancel'); 取消了删除
    • 这对我有用,并为我省去了一些麻烦。我不需要使用@dafi 代码,但很高兴我现在知道了! :)
    【解决方案2】:

    感谢 dafi - 这对我有用:

    $('#some-list').sortable({
      // other options here,
      receive: function(event, ui) {
    
        // ajax or function here
        if(somethingWentWrong) {
           $(this).sortable('cancel');
           $(ui.sender).sortable('cancel');
        }
    
      }
    
     });
    

    我不确定您是否需要$(this).sortable('cancel');,但我认为最好取消源目标可排序列表。这样列表项会立即恢复。其他可排序的options 在这里。

    【讨论】:

      【解决方案3】:

      谢谢,liveat60fps,这是您只需要的两个语句中的第二个语句。

      $('#some-list').sortable({
      
            // other options here,
        receive: function(event, ui) {
      
          // ajax or function here
          if(somethingWentWrong) {
             $(this).sortable('cancel');
             $(ui.sender).sortable('cancel');
          }    
        }    
      });
      

      这样在一定条件下,你可以恢复到原来的状态。

      【讨论】:

        猜你喜欢
        • 2011-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-29
        • 1970-01-01
        • 1970-01-01
        • 2018-11-17
        相关资源
        最近更新 更多