禁用后启用droppable

时间:2012-02-14 13:59:00

标签: jquery

我的模拟问题为this SO question。我有一个overflow: scroll的div,里面有droppables。如果可拖动的数据低于div,则仍会触发可投放的数据。该问题的解决方案确实可以防止这种情况发生。但是,我有另一个div,我的第一个div下面有droppables。这个解决方案阻止我放弃我的第二个droppable。

所以我不得不稍微修改它,而不是检查drop事件,我把它放在droppable上的over事件上。如果隐藏了droppable,我将其禁用。这使第二个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);           
        }
});

1 个答案:

答案 0 :(得分:0)

我设法使用可拖动对象的stop事件来重新启用已禁用的那些droppable。

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