2012-02-14 32 views
0

Im的模擬問題與this SO question一樣。我有一個與overflow: scroll與可滴入裏面的div。如果一個可拖動的區域落在div下面,則可觸發區域仍然會觸發。該問題的解決方案確實可以防止這種情況發生。不過,我還有另一個div,在我的第一個div下面有droppables。這個解決方案也阻止我放棄第二次投資。在禁用後啓用droppble

所以我不得不稍微修改一下,而不是把檢查放在drop事件上,我把它放在droppable上的over事件上。如果可以隱藏,我禁用它。這使得第二個droppable工作,但林無法重新啓用droppable供將來使用。我試圖使用droppable事件,但我想它也會被禁用,當我禁用droppable時,因爲它沒有觸發。如何在禁用後啓用droppable?還是有更好的方法來做到這一點?

$('.droppable').droppable({    
     over: function(event, ui) { 
      var myOverflowObj = $(this).closest(".module, #process-window"); 

      if (myOverflowObj.length) { 

       var cTop = myOverflowObj.position().top + parseInt(myOverflowObj.css("margin-top")); 
       var cBtm = myOverflowObj.position().top + parseInt(myOverflowObj.css("margin-top")) + myOverflowObj.height(); 
       var dTop = $(this).position().top + parseInt($(this).css("margin-top")); 
       var dBtm = $(this).position().top + parseInt($(this).css("margin-top")) + $(this).height(); 

       if ((dBtm > cTop && dTop < cBtm) == false) { 
        $(this).droppable("option", "disabled", true); 
       } 
      } 
     }, 
     out: function(event, ui) { 
      $(this).droppable("option", "disabled", false);   
     } 
}); 

回答

0

我設法做一個變通,用可拖動對象的停止時重新啓用已被禁用的droppables。

$('.draggable').draggable({  
    stop: function() { 
     $.each($('.droppable.ui-state-disabled'), function(index, value) { 
      $(this).droppable("option", "disabled", false);  
     }); 
    }   
});