1

​​演示我的問題。請注意,當您將一個框拖出其父項並將其帶回父項時,父項將接受該元素。當孩子被拖拽時,我需要讓父母的droppable'被禁用。然後我需要在孩子被丟棄後重新啓用droppable'。在從父級拖動時禁用父級droppable框

我嘗試使用start:和stop:droppable方法,但是,獲取正確的元素以禁用/重新啓用是棘手的,kludgy,並且不管用。

這裏是我與可投放處理器嘗試的例子:

$('<fieldset />', 
{ 
    id: login, 
    level: self.levelValue, 
    class: 'member ' + employeeClass, 
}).appendTo('#columnWrapDiv') 
    .droppable(
    { 
     hoverClass: 'hovered', 
     drop: function(event,ui) { /* removed */}); 

而且我可拖動:

$('.class') 
    .draggable(
    { 
     containment: '#ttkanbanDiv', 
     cursor: 'crosshairs', 
     revert: true, 
     opacity: 0.4, 
     start: 
     function(ui) 
     { 
      var id = $($($(ui).attr('srcElement')) 
         .parents() 
         .find('.ui-droppable')[0]).attr('id'); 
      $('#' + id).removeClass('ui-droppable'); 
     }, 
     stop: 
     function(ui) 
     { 
      $($($(ui).attr('srcElement')) 
       .parents() 
       .find('.ui-droppable')[0]) 
       .addClass('ui-droppable'); 
     }, 
     zindex: 'auto', 
    }); 

回答

2

而且修復:http://jsfiddle.net/xSQBw/1/

具體的代碼,使得它工作(感謝irc.freenode.net上的Shoky#jquery):

$('#unassignedDiv,.member').droppable({ 
    hoverClass: 'hovered', 
    accept: function(draggable) { 
     draggable = draggable[0]; 
     var droppable = this; 
     return !$.contains(droppable, draggable); 
    }, 
    drop: ...