2012-10-30 160 views
5

我只需要一个下拉区域中的1个块,并在需要时进行切换。为什么我可以禁用,但无法启用可拖放功能?为什么我可以禁用,但不能启用droppable功能?

这里是我的代码:

$('.my_block').draggable({ 
    revert: "invalid",   
}); 

$('.free').droppable({   
    accept: ".my_block", 
    drop: function(ev, ui) {    
     $(this).removeClass("free");  
     $(this).addClass("1");     
     ui.draggable.appendTo($(this)).removeAttr('style'); 
      $(this).droppable("disable");    
     }, 
     out: function(ev, ui) {      
      $(this).droppable("enable");  
      $(this).removeClass("1");  
      $(this).addClass("free");    
     },   
    }); 

的jsfiddle http://jsfiddle.net/4ABCN/2/

如何通过一个按钮将所有红色块返回到主要位置?

+0

所以,你的目标是什么行为在for?我可能能够帮助你! ':)' –

+0

我需要禁用droppable,当一个可拖动(红色)元素,如果离开(没有一个元素在那里,将红色块移动到另一个黑色块),我需要再次启用它。现在我不能回到我的红色块在第一droppable位置,couse,禁用:( –

+0

Saweet,请参阅下面的帖子,希望它适合您的需要!:)) –

回答

2

工作演示已删除旧的演示

新的演示试试这个:http://jsfiddle.net/7EbKS/

行为:现在,当用户移动你被允许放弃在空位置一个又一个的红色方块,

希望它适合原因:)

代码

$(function() { 
    foo(); 

    $('.my_block').draggable({ 
     revert: "invalid", 
     stop: function() { 
      $(this).draggable('option', 'revert', 'invalid'); 
     } 

    }); 

    function foo() { 
     $('.block').droppable({ 
      greedy: true, 
      accept: ".my_block", 
      // tolerance: "fit", 
      drop: function(ev, ui) { 
       ui.draggable.appendTo($(this)).removeAttr('style'); 
      } 
     }); 
    } 
    $('.my_block').droppable({ 
     greedy: true, 
     tolerance: 'touch', 
     drop: function(event, ui) { 
      ui.draggable.draggable('option', 'revert', true); 
     } 
    }); 

}); 
+0

谢谢,但“我只需要在一个下拉区域1块”,在您的代码可以不止一个..我认为这是因为$('。1')。droppable(“enable”);类的问题,在OUT行动类不会改变:( –

+0

@EugenBorunoff看到我的更新后的帖子':)' –

+1

谢谢,亲爱的:) –

相关问题