如何在失败的AJAX请求时恢复'可拖动'?

时间:2009-08-31 13:18:12

标签: php jquery jquery-ui drag-and-drop

我有一个可拖动的div,需要放在droppable上。如果正确删除,则droppable会调用AJAX请求。如果draggable没有有效的id或AJAX请求失败,则应将draggable恢复为原始位置。这是可以用jQuery完成的吗?!

非常感谢任何帮助!!

$("div.draggable").livequery(function(){
   $(this).draggable({
      revert: 'invalid',
      distance: 20
   })
});

$("#trash").droppable({
   tolerance: 'touch',
   drop: function(event, ui) 
   {    
      var item = ui.draggable;
      var id = item.attr('id');

      if (id) 
      {
         $.ajax( 
         {
            type: "POST",
            url: "delete.php",
            data: "id=" + id,
            success: function(html)
            { 
               if (html) 
               {
                  item.remove();
               } 
               else
               {
                  // FAILED AFTER AJAX
                  // is it possible to revert the draggable from here??
               } 
            }
         });            
      }
      else
      {
         // FAILED BEFORE AJAX
         // is it possible to revert the draggable from here??
      }
}
}); 

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,

您可以这样做:

item.css({"top":0, "left":0});

提示:可拖动具有相对位置。

答案 1 :(得分:0)

我不太熟悉jquery - 但是id建议使用原型框架(以及scriptaculous) - 在原型中你可以肯定地实现这种效果。

答案 2 :(得分:0)

如果您能猜出它在故障块中的原始位置,只需使用选择器找到它并使用操作函数将其从当前位置移除并将其移动到旧位置。

如果你需要,也许你可以在拖动它时存储原始位置(父和子索引),然后在失败时将其移回那里