从父项拖动时禁用父可投放框

时间:2012-07-26 00:24:32

标签: jquery jquery-ui jquery-ui-draggable jquery-ui-droppable

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

我尝试使用start:和stop:用于droppable的方法,但是,获取正确的元素以禁用/重新启用是棘手的,kludgy,并且无论如何都不起作用。

以下是我尝试使用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',
  });

1 个答案:

答案 0 :(得分: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: ...