Как я могу вернуть «перетаскиваемый» при неудачном запросе AJAX? - PullRequest
0 голосов
/ 31 августа 2009

У меня есть перетаскиваемый div, который нужно бросить на предмет сброса. Если он отброшен правильно, droppable вызывает AJAX-запрос. Если перетаскиваемый объект не имеет действительного идентификатора или запрос AJAX не выполняется, перетаскиваемый объект должен быть возвращен в исходное положение. Это то, что можно сделать с помощью 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 ]

1 голос
/ 02 августа 2010

У меня была такая же проблема,

Вы можете просто сделать:

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

Совет: Draggable имеет относительное положение.

0 голосов
/ 31 августа 2009

Если вы можете догадаться, какая его исходная позиция была в блоке сбоя, просто используйте селектор, чтобы найти его, и функции манипуляции, чтобы удалить его из текущей позиции и переместить в старую.

Если вам нужно, возможно, вы можете сохранить исходную позицию (родительский и дочерний индексы) при ее перетаскивании, а затем переместить ее туда, если она не удалась

0 голосов
/ 31 августа 2009

Я не слишком знаком с jquery - но id предлагает использовать платформу прототипа (вместе с scriptaculous) - в прототипе вы можете определенно достичь этого эффекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...