2013-09-27 60 views
2

我正在製作一個可以從左側容器拖放到放置區域的產品列表。產品被拖放到放置容器上,但之後,(X)關閉按鈕變爲活動狀態,然後我們點擊,然後產品恢復到原來的位置。拖動產品並將其放入容器的部分工作正常。但在那之後我得到這個錯誤jquery drag n drop恢復原始位置不工作

Uncaught TypeError: Cannot read property 'originalPosition' of undefined 

我的代碼(jQuery的版本1.9和jQuery UI的版本1.10.3)

 $(document).ready(function() { 
$('.drg-bx1').droppable({ 
    tolerance: 'fit' 
}); 

$('.mt-drg-ob').draggable({ 
    revert: 'invalid', 
    stop: function(){ 
     $(this).draggable('option','revert','invalid'); 
     $(this).find('.undo').show(); 
    } 
}); 

$('.mt-drg-ob').find('.undo').click(function(i, e) { 
    var $div = $(this).parent(); 
    revertDraggable($div); 
}); 

$('.drg-bx1').droppable({ 
    greedy: true, 
    tolerance: 'touch', 
    drop: function(event,ui){ 
     // ui.draggable.draggable('option','revert',true); 
     if (!ui.draggable.data("originalPosition")) { 
      ui.draggable.data("originalPosition", 
           ui.draggable.data("draggable").originalPosition); 

     } 


     $(this).find('.undo').show(); 
    } 
}); 


}); 
function revertDraggable($selector) { 
    $selector.each(function() { 
     var $this = $(this), 
      position = $this.data("originalPosition"); 

     if (position) { 
      $this.animate({ 
       left: position.left, 
       top: position.top 
      }, 500, function() { 
       $this.data("originalPosition", null); 
      }); 
     } 
    }); 

    $selector.find('.undo').hide(); 

} 

回答

3

使用ui.draggable.data("uiDraggable").originalPosition而不是

ui.draggable.data("draggable").originalPosition);

Full Answer Here

+0

感謝您的回答。 – lislis