Jquery droppable实时禁用/启用

时间:2010-05-24 14:43:28

标签: javascript jquery

我在droppables列表中有一些draggables(每个droppable li有1个可拖动)。

当我将一个可拖动的拖放器从一个可放置的droppable移动到另一个可放置的droppable时,我想对接收的droppable进行diable,并启用它所从的droppable。

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

$(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");
        }
      });
    }
  });
});

2 个答案:

答案 0 :(得分:8)

您可以通过设置“禁用”选项来启用/禁用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

答案 1 :(得分:3)

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

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