2010-05-24 52 views
4

我在droppables列表中有一些draggables(每个droppable li可拖动1个)。Jquery droppable live禁用/启用

当我将拖放从一个droppable移动到另一个空闲droppble时,我想要diable接收droppable,并启用droppble它离开。

在firebug中,droppable类被删除 - 但droppable的功能仍然存在。我有一种感觉,我需要以某种方式使用live(),但可以使用leg-up。

$(function() { 
$(".user").draggable({ 
    revert   : true, 
    revertDuration : 200 
}); 


    $("li.droppable").droppable({ 
    accept  : ".user", 
    hoverClass : "drophover", 
    drop: function(event, ui) { 
     var position = this.getAttribute("id").replace("position_", ""), 
     user_id = ui.draggable.attr("id").replace("user_", ""); 
     droppable = this 
     parent = ui.draggable.parent() 
     $.ajax({ 
     url : "users/"+user_id+"", 
     type : "POST", 
     dataType: "JSON", 
     data : ({ 
      "position" : position, 
      "_method" : "PUT" 
     }), 
     success : function() { 
      $(ui.draggable).parent().addClass("droppable"); 
      $(ui.draggable).appendTo(droppable); 
      $(parent).removeClass("droppable"); 
     } 
     }); 
    } 
    }); 
}); 

回答

8

您可以通过设置'disabled'选项来启用/禁用droppable,而不是删除droppable类。

success : function() { 
     $(ui.draggable).parent().droppable("option", "disabled", false); 
     $(ui.draggable).appendTo(droppable); 
     $(parent).droppable("option", "disabled", true); 
    } 

http://docs.jquery.com/UI/Droppable#option-disabled

+3

该死的需要有一个“别人用与你现在一样的前提来回答这个问题”的消息,在回答这个问题时...... – 2010-05-24 14:58:50

3

而是改变之类的,也许尝试设置的选项? $(ui.draggable).parent().droppable();

$(ui.draggable).parent().droppable('option', 'disabled', true);