2012-03-21 94 views
5

下降到一個div我想弄清楚如何做到這一點的邏輯。jQuery UI刪除元素時,使用.droppable

我有很多隻有CSS類名稱的圖像,它們是動態創建的。

這些圖像拖動使用jQuery UI的.draggable.

我需要有一個「垃圾箱」,當元件拖入,它被刪除。

http://jsfiddle.net/KWdcU/3/(這是設置爲刪除所有的元素,而不是一個拖進它)

代碼

<div class ="box"> 
<div class="stack">one</div> 
<div class="stack">two</div> 
</div> 
<div id="trash">trash</div>​ 



$(function() { 
     $(".stack").draggable(); 
}); 

$('#trash').droppable({ 
      over: function() { 
      //alert('working!'); 
      $('.box').remove(); 
      } 
    }); 

回答

17

您可以找到該項目被.draggable屬性拖拽ui元素被傳遞給回調函數over,詳見docs。像這樣:

$(function() { 
    $(".stack").draggable(); 

    $('#trash').droppable({ 
     over: function(event, ui) { 
      ui.draggable.remove(); 
     } 
    }); 
}); 

Here's an updated jsFiddle


從可用性的角度來看,我建議使用 drop事件而不是 over事件,因爲通過將其無意拖到垃圾箱上來刪除某個項目會很麻煩。

+0

由於代替使用下降,這是一個閱讀理解失敗對我而言,對於「降」好主意。 – Wyck 2012-03-21 00:42:59

+1

'ui.draggable.remove()'也可以(沒有'$(...)') – Dejv 2015-01-22 14:34:17

+0

我喜歡這個錯誤:我試着回答0x800a138f - JavaScript運行時錯誤:無法獲取屬性'remove'undefined或空引用 – 2016-08-05 06:42:19

10

更好地在全球

$(function() { 
    $(".stack").draggable(); 

    $('#trash').droppable({ 
     drop: function(event, ui) { 
      $(ui.draggable).remove(); 
     } 
    }); 
}); 
+1

同意,drop比用戶更友好和自然 – GoldenGonaz 2017-03-17 05:48:24