2010-05-24 51 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);