首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery UI可排序:基于某些条件的恢复位置

JQuery UI可排序:基于某些条件的恢复位置
EN

Stack Overflow用户
提问于 2010-04-18 07:49:13
回答 3查看 15K关注 0票数 11

我调用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显示为澄清连续拖动是可以完成的,必须忘记以前的错误。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-18 08:44:13

请看一看.sortable('cancel');如下所示:

代码语言:javascript
复制
var list = $('#some-list')
list.sortable(
{
    // Some options.
    stop: function()
    {
        $.post('some-url', someData, function()
        {
            if (somethingWentWrong)
            {
                list.sortable('cancel');
            }
        });
    }
});
票数 25
EN

Stack Overflow用户

发布于 2011-06-28 05:21:05

多亏了dafi --这对我来说很管用:

代码语言:javascript
复制
$('#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');,但我认为最好取消源列表和目标排序列表。这样,列表项就会立即恢复。这里还有其他可分类的选项

票数 9
EN

Stack Overflow用户

发布于 2017-10-24 11:44:07

谢谢,liveat60fps,这是你只需要的两句话中的第二句。

代码语言:javascript
复制
$('#some-list').sortable({

      // other options here,
  receive: function(event, ui) {

    // ajax or function here
    if(somethingWentWrong) {
       $(this).sortable('cancel');
       $(ui.sender).sortable('cancel');
    }    
  }    
});

这样,在一定条件下,你就可以回到原状了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2661514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档