1

http://jsfiddle.net/xSQBw/演示了我的问题。请注意,当您将一个盒子拖出其父级并将其带回父级时,父级将接受该元素。我需要在拖动孩子时禁用父母的可放置性。然后我需要在孩子被丢弃后重新启用 droppable'ness。

我尝试使用 start: 和 stop: 方法进行 droppable,但是,让正确的元素禁用/重新启用是棘手的、笨拙的,并且无论如何都不起作用。

这是我正在尝试使用 droppable 处理程序的示例:

$('<fieldset />',
{
    id: login,
    level: self.levelValue,
    class: 'member ' + employeeClass,
}).appendTo('#columnWrapDiv')
  .droppable(
    {
        hoverClass: 'hovered',
        drop: function(event,ui) { /* removed */});

还有我的可拖动:

 $('.class')
  .draggable(
  {
      containment: '#ttkanbanDiv',
      cursor: 'crosshairs',
      revert: true,
      opacity: 0.4,
      start: 
        function(ui)
        {
            var id = $($($(ui).attr('srcElement'))
                        .parents()
                        .find('.ui-droppable')[0]).attr('id');
            $('#' + id).removeClass('ui-droppable');
        },
      stop:
        function(ui)
        {
            $($($(ui).attr('srcElement'))
                .parents()
                .find('.ui-droppable')[0])
                .addClass('ui-droppable');
        },
      zindex: 'auto',
  });
4

1 回答 1

2

和修复:http: //jsfiddle.net/xSQBw/1/

使其工作的特定代码(感谢 irc.freenode.net #jquery 中的 Shoky):

$('#unassignedDiv,.member').droppable({
    hoverClass: 'hovered',
    accept: function(draggable) {
        draggable = draggable[0];
        var droppable = this;
        return !$.contains(droppable, draggable);
    },
    drop: ...
于 2012-07-26T00:24:31.873 回答