2012-03-21 27 views
5

Tôi đang cố gắng tìm ra logic về cách thực hiện điều này.Giao diện người dùng jQuery xóa phần tử khi được thả vào div bằng cách sử dụng .droppable

Tôi có nhiều hình ảnh chỉ với tên lớp CSS, chúng được tạo động.

Những hình ảnh này là có thể kéo sử dụng jQuery UI của .draggable.

tôi cần phải có một "thùng rác" rằng khi một phần tử được kéo vào, nó được lấy ra.

Ví dụ: http://jsfiddle.net/KWdcU/3/ (Điều này được thiết lập để loại bỏ tất cả các yếu tố và không phải là người kéo vào nó)

:

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

Trả lời

17

Bạn có thể tìm mục đang được kéo bằng cách sử dụng thuộc tính .draggable của phần tử ui được chuyển đến hàm gọi lại của over, như được nêu trong số docs. Như thế này:

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

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

Here's an updated jsFiddle.


Từ quan điểm về khả năng sử dụng, tôi khuyên bạn nên sử dụng sự kiện drop thay vì sự kiện over vì việc xóa một mục bằng cách kéo vô tình vào thùng rác vô tình sẽ gây phiền toái.

+0

Cảm ơn, đó là một sự hiểu biết đọc thất bại trên một phần của tôi, ý tưởng tốt cho 'thả'. – Wyck

+1

'ui.draggable.remove()' cũng ok (không có '$ (...)') – Dejv

+0

i fatch lỗi này: tôi cố gắng trả lời 0x800a138f - Lỗi thời gian chạy JavaScript: Không thể lấy thuộc tính 'remove' của undefined hoặc tham chiếu null –

10

Tốt hơn để sử dụng thả trong stead hơn

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

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

Đồng ý, giảm nhiều người dùng thân thiện và tự nhiên hơn là – GoldenGonaz

Các vấn đề liên quan