无法在droppable上删除jquery ui helper

时间:2011-01-11 16:46:12

标签: jquery drag-and-drop

为什么这段代码不允许我将帮助器放到可放置区域?

  $(".product").draggable({
    revert: 'invalid',
    cursorAt: { top: -12, left: -20 },
    helper: function(event) {
      return $('<div class="product_helper"></div>');
    }
  });
  $(".droppable").droppable({
    accept: '.product_helper',
    drop: function(event, ui) {
      $(this).append( ui.helper );
    }
  });

甚至可以将帮助器放到可放置的物体上吗?

2 个答案:

答案 0 :(得分:11)

完全可以删除帮助程序的克隆,但是不能删除帮助程序本身(如示例中所示)。

这是一个jsFiddle演示丢弃一个克隆的帮助器: http://jsfiddle.net/jKabn/1/

以下是相关代码:

  $(".product").draggable({
    revert: 'invalid',
    cursorAt: { top: -12, left: -20 },
    helper: function(event) {
      return $('<div class="helper">Helper</div>');
    }
  });
  $(".droppable").droppable({
    drop: function(event, ui) {
           //clone and remove positioning from the helper element
           var newDiv = $(ui.helper).clone(false)
               .removeClass('ui-draggable-dragging')
               .css({position:'relative', left:0, top:0});  

           $(this).append(newDiv);
    }
  });

在jquery中执行drop后删除帮助程序。为了保持它,你需要删除可拖动的特定css和定位以及克隆元素。在jsFiddle中还有一个关于删除“draggable”元素的演示(并不是因为它与你的问题特别相关,我只是为自己添加它。)

希望有所帮助

答案 1 :(得分:1)

我遇到的一个问题是,如果公差选项的默认值为'intersect',则可拖动元素太宽而无法放到droppable元素上。

'intersect'表示当drando的50%超过droppable时,可以删除draggable。如果它的宽度超过两倍,这是不可能的。

我的拖拉机有一个可变值,因此它们的宽度会有所不同,是否可以降低它们。我使用'指针'来代替鼠标所在的位置。