2011-01-11 26 views
6

爲什麼這段代碼不讓我把助手放到droppable區域?不能放棄jquery ui助手在droppable上

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

甚至有可能將助手拖放到droppable上嗎?

回答

11

完全可以刪除助手的克隆,但助手本身(如您的示例中)不能被刪除。

這裏是一個展示的jsfiddle下降克隆幫手: http://jsfiddle.net/jKabn/1/

下面是相關的代碼:降jQuery中執行後

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

助手被刪除。爲了保持它,你需要刪除可拖動的特定CSS和定位以及克隆元素。在的jsfiddle有也下降「拖動」元素以及演示(不,這是你的問題,我只是將其添加爲自己特別重要。)

希望幫助

+0

謝謝,+1對問題的清楚解釋(無法刪除幫助者,但需要克隆它)和工作js小提琴。我添加了一個`.css({position:'absolute',left:0,top:ui.offset.top});`以便讓掉落的幫手保持其位置。謝謝 – 2011-01-11 23:53:21

1

一個問題,我是如果公差選項的默認值爲'intersect',則可拖動的元素太大而無法放到可放置元素上。

'相交'表示當可拖動的50%超過可放置時可拖動。如果寬度超過兩倍,這是不可能的。

我的拖動器有一個變量值,所以它們的寬度不同,以及它們是否可以丟棄。我使用'指針'來代替鼠標。